【发布时间】:2015-04-13 12:43:58
【问题描述】:
我有许多页面具有相同的表单,我使用 commandName 绑定我的对象。我尝试将对象放入名为“myObject”的会话并将其用于表单(commandName =“myObject”)。但是系统抛出异常(对于 bean 名称“myObject”,BindingResult 和普通目标对象都没有)。 如何将对象绑定到任何控制器和请求的会话?
【问题讨论】:
标签: spring spring-mvc
我有许多页面具有相同的表单,我使用 commandName 绑定我的对象。我尝试将对象放入名为“myObject”的会话并将其用于表单(commandName =“myObject”)。但是系统抛出异常(对于 bean 名称“myObject”,BindingResult 和普通目标对象都没有)。 如何将对象绑定到任何控制器和请求的会话?
【问题讨论】:
标签: spring spring-mvc
当您使用form:form 标记定位请求中不可用的命令对象时,该错误很常见。
一个好的方法是将@ModelAttribute带注释的方法与@SessionAttributes结合在一个控制器上,该控制器最初转发到包含表单的视图,类似于
@Controller
@SessionAttributes("myObject")
public class FormController {
@ModelAttribute("myObject")
public MyObject createMyObjectBean() {
return new MyObject();
}
...
}
最初的createMyObjectBean 将在对控制器方法的第一个请求中调用,但不会在后续请求中调用,因为myObject 值将来自会话,因为@SessionAttributes
请注意,要使这种方法起作用,您必须有一个控制器来转发到包含您的表单的视图
【讨论】: