21

我正在使用基于注释的验证,但对于其中一种形式,我无法使用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

5 回答 5

43

我不得不使用它@ModelAttribute来完成这项工作。所以表格前面是@ModelAttribute("copyCartForm") @Valid CopyCart copyCartForm, BindingResult result)

于 2010-05-27T21:02:49.413 回答
9

另一种方法,如果由于某种原因您在使用时无法使用,请@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";
}
于 2012-09-20T14:45:19.197 回答
6

我遇到了同样的问题。

我不得不使用@ModelAttribute("attributeName")来获取验证错误作为响应。

于 2011-12-20T13:36:20.417 回答
2

我不知道为什么,在我弄清楚之前我遭受了很多痛苦,但是你必须将你的 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">
于 2016-09-14T22:36:38.130 回答
0

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

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
</dependencies>
于 2021-03-27T22:24:01.237 回答