如何向每个输入/组件显示NEXT验证错误?
验证
@Override
public void validate( final Object obj, final Errors e )
{
ValidationUtils.rejectIfEmpty( e, "firstname", "error.firstname.empty" );
}
JSP:
<form:label path="firstname">
<spring:message code="label.firstname" />
</form:label>
<form:input path="firstname" />
<form:errors path="firstname" /> <!-- THIS DOES NOT WORK! -->
我可以使用以下视图代码显示所有错误:
<spring:hasBindErrors name="contact">
<ul>
<c:forEach var="error" items="${errors.allErrors}">
<spring:message code="${error.code}"></spring:message>
</c:forEach>
</ul>
</spring:hasBindErrors>
有什么想法吗?
答案 0 :(得分:6)
希望你已经明白了。
您可以执行以下操作来显示所有错误:
<spring:bind path="contactUs.*">
<c:if test="${status.errors.errorCount > 0}">
<ul>
<c:forEach var="error" items="${status.errors.allErrors}">
<li><spring:message message="${error}"></spring:message></li>
</c:forEach>
</ul>
</c:if>
</spring:bind>
如果您需要显示每个表单输入并且它的绑定错误彼此相邻,您需要执行以下操作:
<spring:bind path="contactUs.email">
<input value="${status.value}" name="${status.expression}">
<c:if test="${status.error}">
Error codes:
<c:forEach items="${status.errorMessages}" var="error">
<c:out value="${error}"/>
</c:forEach>
</c:if>
</input>
</spring:bind>
答案 1 :(得分:1)
当我这样做时,<form:errors path="firstname" />
对你有用。
确保在JSP中正确设置<form:form/>
标记:
<form:form name="someName" commandName="commandClassName">
还要确保<form:errors>
字段在<form:form>
标记内,并且您的命令类的实例变量在JSP和getter / setter中具有正确的大小写。
答案 2 :(得分:1)
不要使用转发或重定向。您需要将响应发送回视图。
e.g。
if( result.hasErrors() )
{
return "/contact";
}