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

eve*_*zon 6 validation spring spring-mvc

如何向每个输入/组件显示NEXT验证错误?

验证器:

@Override
public void validate( final Object obj, final Errors e )
{
   ValidationUtils.rejectIfEmpty( e, "firstname", "error.firstname.empty" );
}
Run Code Online (Sandbox Code Playgroud)

JSP:

<form:label  path="firstname">
   <spring:message code="label.firstname" />
</form:label>
<form:input  path="firstname" />
<form:errors path="firstname" /> <!-- THIS DOES NOT WORK! -->
Run Code Online (Sandbox Code Playgroud)

我可以使用以下视图代码显示所有错误:

<spring:hasBindErrors name="contact">
   <ul>
      <c:forEach var="error" items="${errors.allErrors}">
         <spring:message code="${error.code}"></spring:message>
      </c:forEach>
   </ul>
</spring:hasBindErrors>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 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>
Run Code Online (Sandbox Code Playgroud)

如果您需要显示每个表单输入并且它的绑定错误彼此相邻,您需要执行以下操作:

<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>
Run Code Online (Sandbox Code Playgroud)


Ian*_*las 2

<form:errors path="firstname" />当我这样做时,你所拥有的对我有用。

确保在 JSP 中<form:form/>正确设置了标签:

<form:form name="someName" commandName="commandClassName">

还要确保该<form:errors>字段位于<form:form>标记内,并且命令类的实例变量在 JSP 和 getter/setter 中具有正确的大小写。