我正在尝试让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>
,就像验证成功一样。
任何人都可以告诉我在配置方面我错过了什么,或者我做错了什么?谢谢!
答案 0 :(得分:0)
当你说// I want to validate automatically not by calling BindingResult
时,我认为你的意思是你不想使用bindingResult.hasErrors()?
AFAIK,您必须明确定义在验证错误时要执行的操作。 @Valid注释将验证您的模型属性,但您必须在控制器中明确地使用绑定结果在错误之后使用什么?
if (bindingResult.hasErrors())
return "someView";