在模板中使用spring表单

时间:2014-07-02 07:51:02

标签: spring spring-mvc sitemesh

我的header.jsp中有一个注册表单,其中包含字段;名称 - 电子邮件地址和密码。

当用户点击"注册"按钮,它将被发布到我的注册控制器:

 @RequestMapping(value ="/register", method = RequestMethod.POST)
    public String registerUserAccount(@Valid @ModelAttribute("user") RegistrationForm userAccountData,
                                      BindingResult result, ... )

由于我使用的是spring form标签,因此我在索引视图中为数据绑定添加了一个空的用户对象。

问题是我一直在

Neither BindingResult nor plain target object for bean name 'user' available as request attribute

此表单位于我的头文件中,因此可以从所有页面访问它。我是否必须为每个ModelAndView添加一个用户对象,或者是否有更简洁的方法来解决此问题。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

@ControllerAdvice
public class ModelAdvice {

   @ModelAttribute
   public RegistrationForm registrationForm() {
     return new RegistrationForm();
   }

}
当您想要将某些内容应用于所有控制器时,使用

@ControllerAdvice。在这种情况下,您希望将@ModelAttribute应用于所有控制器,因为您说的是注册表单在所有页面中。

对于更多查找粒度控制,您可能希望实现HandlerInterceptor,以便在需要时将所需数据添加到HttpServletRequest