免责声明:我希望在开始使用该框架之前有一个全面的了解。但就目前而言,我在这方面缺乏,因此是这个问题。
我正在使用 Spring-Portlet MVC。
我有一个流程,我在屏幕上输入一个输入,验证输入,这取决于它的结果,它要么呈现同一个屏幕,要么呈现下一个屏幕。
实施细节:
我有一个动作方法,它采用支持命令对象的形式。它检查输入的输入是否有效。如果它无效,它会在它作为另一个参数的 BindingResult 实例中填充错误消息。
我们有不同的渲染方法,来渲染不同的屏幕。
我在这些渲染方法中将命令对象作为参数。我收到的这个命令对象与传递给操作的命令对象相同。
问题:
在重新渲染屏幕时,spring-mvc 应该绑定在 action 方法中填充的错误消息。目前,当我在渲染方法中将命令对象作为参数时,spring-mvc 无法绑定该错误消息。但有趣的是,如果我不将命令对象作为渲染方法中的参数,而是在那里完全创建一个新的命令对象,它能够绑定错误消息。
可以,对spring-portlet mvc有更好理解的人请解释一下这种行为,或者告诉我哪里缺乏理解。
问候,
马维亚
编辑:只是为了丰富以下答案:虽然我没有完全隔离导致上述行为的问题,但我满足我的要求的方式是使用模型属性。ModelAttribute 可以用于方法或方法的参数。它确保模型将可用于所有调用,直到视图呈现(这是我的理解!)。因此,我们不需要在 Render 方法中将 command 对象作为参数,只需在 action 方法中使用 ModelAttribute 注释 commandObject 参数,然后您就可以按照以下答案中的建议从模型返回相同的对象。