2010-07-27 2 views
6

Как показать ошибки проверки NEXT для каждого входа/компонента?Показать ошибки привязки рядом с каждым вводом

Validator:

@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> 

Есть идеи?

ответ

1

Что вы имеете с <form:errors path="firstname" /> работает для меня, когда я это делаю.

Убедитесь в вашем JSP у вас есть настройки <form:form/> тегов правильно:

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

Также убедитесь, что <form:errors> поля находится в пределах <form:form> тега, и что ваш переменный экземпляр для вашего класса команды имеет правильную капитализация в JSP и геттеры/сеттеры.

1

Не использовать перенаправление или перенаправление. Вам нужно отправить ответ обратно в представление.

например.

if(result.hasErrors()) 
{ 
    return "/contact"; 
} 
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.eamil"> 
    <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> 
</spring:bind> 
Смежные вопросы