2010-07-27 39 views
6

Làm cách nào để hiển thị lỗi xác thực NEXT cho từng đầu vào/thành phần?Hiển thị lỗi liên kết bên cạnh mỗi đầu vào

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

tôi có thể hiển thị tất cả các lỗi bằng cách sử dụng mã xem sau:

<spring:hasBindErrors name="contact"> 
    <ul> 
     <c:forEach var="error" items="${errors.allErrors}"> 
     <spring:message code="${error.code}"></spring:message> 
     </c:forEach> 
    </ul> 
</spring:hasBindErrors> 

Bất kỳ ý tưởng?

Trả lời

1

Những gì bạn có với <form:errors path="firstname" /> có hiệu quả đối với tôi khi tôi làm điều đó.

Hãy chắc chắn rằng trong JSP của bạn, bạn có thiết lập <form:form/> thẻ đúng cách:

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

Ngoài ra hãy chắc chắn rằng trường <form:errors> là trong một thẻ <form:form> và rằng các biến thể hiện của bạn cho các lớp lệnh của bạn có đúng viết hoa trong JSP và getters/setters.

1

Không sử dụng chuyển tiếp hoặc chuyển hướng. Bạn cần gửi phản hồi về chế độ xem.

ví dụ:

if(result.hasErrors()) 
{ 
    return "/contact"; 
} 
6

Hy vọng bạn đã tìm ra.

Bạn có thể làm như sau để hiển thị tất cả các lỗi:

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

Nếu những gì bạn cần là để hiển thị mỗi hình thức đầu vào và nó ràng buộc lỗi bên cạnh nhau, bạn sẽ cần phải làm:

<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> 
Các vấn đề liên quan