当我遇到错误时,我一直在努力让自己的Spring MVC验证返回到页面提交页面。最后,我注意到BindingResult必须紧靠我要验证的表单参数,从而解决了该问题。

例如,如果我将spring.io教程(http://spring.io/guides/gs/validating-form-input/)中的checkPersonInfo方法修改为-

@RequestMapping(value="/", method=RequestMethod.POST)
public String checkPersonInfo(@Valid Person person, BindingResult bindingResult, Model model) {
    if (bindingResult.hasErrors()) {
        return "form";
    }
    return "redirect:/results";
}

然后它将起作用并重定向到表单页面,但是如果我将其更改为-
@RequestMapping(value="/", method=RequestMethod.POST)
public String checkPersonInfo(@Valid Person person, Model model, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return "form";
    }
    return "redirect:/results";
}

然后它重定向到/errors

这是什么原因造成的?

最佳答案

BindingResult必须跟随绑定(bind)的对象。原因是,如果有更多绑定(bind)的对象,则必须知道哪个BindingResult属于哪个对象。

关于java - 为什么BindingResult必须遵循@Valid?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28887780/

10-10 02:28