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