Spring Form对象验证不会产生错误消息

时间:2013-10-09 13:25:39

标签: java spring validation spring-mvc constraints

我正在尝试让Spring验证提交的表,但是在提交之后它只重新加载portlet(没关系,但它应该显示错误消息)。

代码的重要部分:

我的JSP

<form:form method="post" action="${submitFormLink}" modelAttribute="formObject" commandName="formObject" enctype="multipart/form-data">
    <form:errors path="*" cssClass="errorblock" element="div" />
    <table>
        <tr>
            <td>
                <form:input type="text" path="someVar"/>
            </td>
            <td>
                <form:errors path="someVar" cssClass="error" />
            </td>
        </tr>
    </table>
</form:form>

我的控制器

@RequestMapping
public String create(Model model) throws IOException {
    model.addAttribute("formObject", new FormObject());
    return "view";
}

@ActionMapping(params = {"action=submit"})
public void submit(ActionRequest request, @Valid @ModelAttribute("formObject") FormObject formObject,
                   ActionResponse response) throws IOException, RepositoryException,
                    PortalException, SystemException {
    // some unimportant stuff
    // I want to validate automatically not by calling BindingResult
}

我还包括

<mvc:annotation-driven />

在我的foo-context.xml中,并设置一个FormObject变量的约束,如下所示:

@Size(min = 1, max = 35, message = "Enter between 1-35 characters.")
private String someVar;

我的错误块在提交后没有填充错误,它们只是保持为空<td>,就像验证成功一样。

任何人都可以告诉我在配置方面我错过了什么,或者我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

当你说// I want to validate automatically not by calling BindingResult时,我认为你的意思是你不想使用bindingResult.hasErrors()?

AFAIK,您必须明确定义在验证错误时要执行的操作。 @Valid注释将验证您的模型属性,但您必须在控制器中明确地使用绑定结果在错误之后使用什么?

if (bindingResult.hasErrors())
        return "someView";