我正在尝试实现自己的表单:errors标记,或将其包装在自定义标记上。
我想这样做的原因是自定义消息,显示一些图标等。
我不确定<form:errors />
是否足够用于此目的。
我找到了可以替换<form:errors path="foo" />
<spring:bind path="foo">
<c:if test="${status.error}">
<img src="<c:url value="/resources/images/warning.png"/>"
width="31" height="32" class="error_tooltip" title="${status.errorMessage}" />
</c:if>
</spring:bind>
顺便说一句......如果有人可以解释,我不知道这是如何运作的。我试图将该代码放在自定义标记(标记文件)中,但是: PS。我还想找到一个用ajax请求返回反馈的解决方案。我不确定JSONize BindingResult对象是否是一个很好的解决方案,所以我将可以创建自己的“反馈”对象。
如果<form:error/>
标记无法帮助我进行自定义,那么对正常请求和ajax请求使用“反馈”对象会更好(使用模型传递给JSP,或者使用jj响应来执行ajax)。
修改 这是我的标签代码:
<%@attribute name="name" required="true" %>
<spring:bind path="${name}">
<c:if test="${status.error}">
<img src="<c:url value="/resources/images/warning.png"/>"
width="31" height="32" class="error_tooltip" title="${status.errorMessage}" />
</c:if>
</spring:bind>
答案 0 :(得分:1)
是使用标记<form:errors>
进行自定义表单验证。要使此标记生效,您需要在控制器中使用BindingResult:
@RequestMapping(value="/save",method=RequestMethodPOST)
public String save(@Valid Bean yourBean, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "/create"; // your form
} else {
yourBean= beanService.save(yourBean);
return "redirect:/view/" + yourBean.getId(); // other action
}
}
您可以阅读form validation customization上的优秀教程。