Spring 3 MVC - 表单:错误没有显示错误

Eqb*_*bal 20 spring-mvc spring-annotations

我正在使用基于注释的验证,但对于其中一种表单,我无法使用form:errors标记显示任何错误.当我调试方法时,我可以看到BindingResult有错误,但由于某种原因它没有显示在窗体上.我很困难,因为我已经把它用于其他形式,但由于某种原因,这种特殊形式存在问题.任何指针都非常感谢.

这是来自控制器的一些代码,我在控制器中也有copyCartForm作为@SessionAttribute:

@RequestMapping(params="action=Confirm Copy", method=RequestMethod.POST)
public String copyCart(@Valid CopyCart copyCartForm, BindingResult result) {
    if (result.hasErrors()) {
        logger.debug("errors in form" + result.toString());
        return "copyshoppingcart";
    } else {
                    ...
                    ...
        return "redirect:/home";
    }
}
Run Code Online (Sandbox Code Playgroud)

在JSP中我试过这个:

<form:errors path="*" cssClass="formError"/>
Run Code Online (Sandbox Code Playgroud)

以及:

<form:errors path="fieldName" cssClass="formError"/>
Run Code Online (Sandbox Code Playgroud)

两者都不起作用.

Eqb*_*bal 42

我不得不用@ModelAttribute这个来工作.所以表格之前是@ModelAttribute("copyCartForm") @Valid CopyCart copyCartForm, BindingResult result)

  • 这对我有用.似乎如果您的模型属性名称(copyCartForm)与模型的类名称(copyCart)不匹配,则必须将其指定为@ModelAttribute属性的参数. (8认同)

mok*_*ino 8

还有一种方法,如果由于某种原因你在使用@ModelAttribute("copyCartForm")时无法使用,请遵循:

@RequestMapping(method=RequestMethod.POST)
public String post(@Valid CopyCart copyCartForm, BindingResult bindingResult, ModelMap modelMap) {
    if (bindingResult.hasErrors()) {
        modelMap.put(BindingResult.class.getName() + ".copyCartForm", bindingResult);
        return "copyshoppingcart";
    }
    return "redirect:/home";
}
Run Code Online (Sandbox Code Playgroud)


小智 5

我遇到了同样的问题.

我必须使用它@ModelAttribute("attributeName")来回复验证错误.