java - 从 View 中访问 Spring MVC BindingResult

标签 java spring data-binding spring-mvc

我正在寻找一种从 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/

相关文章:

java - 在 Eclipse 中匹配颜色

java - JLabel 在 BoxLayout 中未向右对齐

java - Spring验证非空元素的字符串列表

java - 在不知道 H2 数据库中的插入顺序的情况下断言预期的 DB 值

javascript - 将 javascript 变量发送到 spring Controller

java - Json (fasterxml) stackoverflow 异常

c# - 基于 DependencyProperty 控制样式

java - 强制 Gradle 使用较早的依赖版本进行测试

java - 通过 main 运行的同一类的两个实例 - 它们与 main 的每个线程相关联的唯一标识符是什么?

Angular 2 性能 : Is it better to bind with a data member than a function?