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

时间:2010-05-18 20:11:21

标签: 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";
    }
}

在JSP中我试过这个:

<form:errors path="*" cssClass="formError"/>

以及:

<form:errors path="fieldName" cssClass="formError"/>

都没有效果。

4 个答案:

答案 0 :(得分:42)

我不得不使用@ModelAttribute来实现这一目标。因此表单前面有@ModelAttribute("copyCartForm") @Valid CopyCart copyCartForm, BindingResult result)

答案 1 :(得分:5)

我遇到了同样的问题。

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

答案 2 :(得分:1)

我不确定为什么和我经历了很多,直到我弄明白,但你必须将你的bean命名为你的bean类。所以copyCartForm应该只是copyCart。

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

还必须在表单标记上进行更改:

<form:form action="....." method="..." commandName="copyCart">

答案 3 :(得分:0)

您需要将此依赖项添加到您的 pom.xml 中:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
</dependencies>