我正在寻找一种从 View (在我的例子中是 JSP 页面)中访问 BindingResult
的方法。
我有以下 Controller 方法:
@RequestMapping(value="/register/accept.html",method=RequestMethod.POST)
public ModelAndView doRegisterAccept(
@Valid @ModelAttribute("registrationData") RegistrationData registrationData,
BindingResult bindingResult
) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("bindingResultXXX", bindingResult);
modelAndView.setViewName("users/registration/register");
return modelAndView;
}
执行此操作时,将填充 RegistrationData
,并将错误存储在 BindingResult
中。到目前为止,一切都很好。但是,我必须手动将 BindingResult
添加到 ModelAndView
中,以便它在 View 中可见。
有没有办法自动将BindingResult
添加到模型中?我已经尝试将方法签名调整为
public ModelAndView doRegisterAccept(
@Valid @ModelAttribute("registrationData") RegistrationData registrationData,
@ModelAttribute("bindingResult") BindingResult bindingResult
) {
我曾希望 - 与任何其他参数一样 - BindingResult
将被添加到模型中的键 bindingResult
下,但不幸的是这不起作用。
那么,有什么想法吗?
加法
我刚刚发现结果确实是使用 key 发布的
org.springframework.validation.BindingResult.<NAME_OF_MODEL_ATTRIBUTE>
所以我想 Spring 人员不鼓励仅将它添加到普通名称下?!
最佳答案
您必须在表单 View 中添加“错误”标签,如下所述:http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/view.html#view-jsp-formtaglib-errorstag . 然后在您的 Controller 中,您只需进行测试:
if(bindingResult.hasErrors()) {
... display your form page again
(and "errors" tags will be populated by validation messages corresponding to each field) ...
}
else {
... here, you know that your RegistrationData is valid so you can treat it (save it I guess) ...
}
关于java - 从 View 中访问 Spring MVC BindingResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6704478/