0

我试图让 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>,就好像验证成功一样。

谁能告诉我关于配置我错过了什么,或者我做错了什么?谢谢!

4

1 回答 1

0

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

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

if (bindingResult.hasErrors())
        return "someView";
于 2013-10-09T14:09:22.003 回答