显示每个输入旁边的绑定错误

时间:2010-07-27 23:45:20

标签: spring validation spring-mvc

如何向每个输入/组件显示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>

有什么想法吗?

3 个答案:

答案 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";
}