Spring MVC中的BindingResult接口有什么用?

BindingResult是有用的,只是与视图或其他东西绑定exception?

BindingResult的确切用途是BindingResult

或者它是有用的绑定模型属性与视图。

特别的例子:使用BindingResult对象作为控制器内Validator的validation方法的参数。

然后,你可以检查这个对象寻找validation错误:

 validator.validate(modelObject, bindingResult); if (bindingResult.hasErrors()) { // do something } 

从官方的Spring文档 :

表示绑定结果的常规接口。 扩展错误注册function的接口,允许应用Validator ,并添加特定于绑定的分析和模型构build。

用作DataBinder的结果持有者 ,通过DataBinder.getBindingResult()方法获取。 BindingResult实现也可以直接使用,例如调用Validator(例如作为unit testing的一部分)。

重要的是要注意,参数的顺序对于弹簧实际上是重要的。 BindingResult需要在正在validation的表单之后。 同样,[可选的] Model参数需要在BindingResult之后。 例:

有效:

 @RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) public String updateEntryQuantity(@Valid final UpdateQuantityForm form, final BindingResult bindingResult, @RequestParam("pk") final long pk, final Model model) { } 

无效:

 RequestMapping(value = "/entry/updateQuantity", method = RequestMethod.POST) public String updateEntryQuantity(@Valid final UpdateQuantityForm form, @RequestParam("pk") final long pk, final BindingResult bindingResult, final Model model) { } 

BindingResult用于validation..

例:-

>

  public @ResponseBody String nutzer(@ModelAttribute(value="nutzer") Nutzer nutzer, BindingResult ergebnis){ String ergebnisText; if(!ergebnis.hasErrors()){ nutzerList.add(nutzer); ergebnisText = "Anzahl: " + nutzerList.size(); }else{ ergebnisText = "Error!!!!!!!!!!!"; } return ergebnisText; } 

基本上BindingResult是一个接口,它规定了存储validation结果的对象应如何存储和检索validation的结果(错误,试图绑定到不允许的字段等)

从Spring MVC表单validation和注解教程 :

[ BindingResult ]是Spring的对象,它持有validation和绑定的结果,并包含可能发生的错误。 BindingResult必须在被validation的模型对象之后出现,否则Spring将无法validation对象并抛出exception。

当Spring看到@Valid ,它会尝试find正在validation的对象的validation器。 如果启用了“注释驱动”,Spring将自动获取validation注释。 Spring然后调用validation器,并将任何错误放在BindingResult ,并将BindingResult添加到视图模型中。