Spring form commandName = session属性

时间:2015-04-13 12:43:58

标签: spring spring-mvc

我有很多页面使用相同的表单,我使用commandName绑定对象。我尝试将对象放到名为“myObject”的会话中,并将其用于表单(commandName =“myObject”)。但是系统抛出异常(BindingResult和bean名称“myObject”都没有普通的目标对象)。 如何将对象绑定到任何控制器和请求的会话?

1 个答案:

答案 0 :(得分:1)

当您使用针对请求中不可用的命令对象的form:form标记时,通常会出现此错误。

一个好的方法是将@ModelAttribute带注释的方法与@SessionAttributes结合在一个控制器上,该控制器最初会转发到包含表单的视图,例如

@Controller
@SessionAttributes("myObject")
public class FormController {

    @ModelAttribute("myObject")
    public MyObject createMyObjectBean() {
        return new MyObject();
    }
    ...
}

初始createMyObjectBean将使用对控制器方法的第一个请求进行调用,但在后续请求中不会调用它,因为myObject值将来自会话,因为{{ 1}}

请注意,要使用此方法,您必须拥有一个转发到包含表单的视图的控制器