我的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
添加一个用户对象,或者是否有更简洁的方法来解决此问题。
答案 0 :(得分:1)
您可以执行以下操作:
@ControllerAdvice
public class ModelAdvice {
@ModelAttribute
public RegistrationForm registrationForm() {
return new RegistrationForm();
}
}
当您想要将某些内容应用于所有控制器时,使用 @ControllerAdvice
。在这种情况下,您希望将@ModelAttribute
应用于所有控制器,因为您说的是注册表单在所有页面中。
对于更多查找粒度控制,您可能希望实现HandlerInterceptor,以便在需要时将所需数据添加到HttpServletRequest