2015-09-26 15 views
6

Tôi có biểu mẫu sau trong Mùa xuân đang hiển thị thông báo lỗi. Tôi tự hỏi khi nào tôi nên sử dụng mùa xuân: ràng buộc? Điều đó làm gì để phân biệt điều đó với? Tôi đã nghiên cứu các trang này a, b nhưng tôi vẫn đang bối rối.Sự khác nhau giữa mùa xuân: ràng buộc và hình thức: lỗi là gì?

<form:form method="post" 
    action="http://localhost:8080/project/calculator/process" 
    modelAttribute="keyPadForm"> 
     Name1: <form:input type="text" path="name1" /> 
     <form:errors path="name1" /> 

<form:form method="post" 
    action="http://localhost:8080/project/calculator/process" 
    modelAttribute="keyPadForm"> 
    <spring:bind path="name1"> 
     Name1: <form:input type="text" path="name1" /> 
     <form:errors path="name1" /> 
    </spring:bind> 

Trả lời

2

Trong trường hợp thứ hai của bạn, spring:bind thẻ là lỗi thời, hình thức đầu tiên của bạn

<form:form method="post" 
    action="http://localhost:8080/project/calculator/process" 
    modelAttribute="keyPadForm"> 
     Name1: <form:input type="text" path="name1" /> 
     <form:errors path="name1" /> 

là một loại đường cú pháp và equiva cho vay mà không cần sử dụng thư viện form thẻ, chứ không phải chỉ các thẻ dạng HTML thông thường, sẽ được dựa trên spring:bind và sẽ giống như thế:

<spring:nestedPath path="keyPadForm"> 
    <form method="post" action="http://localhost:8080/project/calculator/process"> 
    <spring:bind path="name1"> 
     Name1:<input type="text" name="${status.expression}" value="${status.value}"> 
     <span class="fieldError">${status.errorMessage}</span> 
    </spring:bind> 
    </form> 
</spring:nestedPath> 

Có kịch bản mà bạn có thể tạo sự khác biệt, ví dụ form:input luôn là liên kết hai chiều, vì vậy giá trị được gửi tới máy chủ và giá trị hiện tại được hiển thị, trong đó với spring:bind bạn có thể đạt được liên kết một chiều, chỉ gửi tới máy chủ, bằng cách bỏ qua giá trị, ví dụ: <input type="text" name="${status.expression}">, nhưng thực chất chính là form thẻ thư viện cung cấp một thuận tiện hơn ràng buộc liên quan đến thẻ

2

Với spring:bind, bạn có thể sử dụng ${status.error} để kiểm tra nếu trường name1 có lỗi, và hiển thị lớp CSS khác nhau có điều kiện.
Thông báo lỗi vẫn hiển thị qua form:errors, nhưng theo cách này, bạn sẽ có nhiều điều khiển hơn.
ví dụ:

<form:form method="post" modelAttribute="userForm" action="${userActionUrl}"> 
    <spring:bind path="name"> 
    <div class="form-group ${status.error ? 'has-error' : ''}"> 
     <label>Name</label> 
     <form:input path="name" type="text" id="name" /> 
     <form:errors path="name" /> 
    </div> 
    </spring:bind> 
</form:form> 

và bạn có thể tham khảo Spring MVC Form – Check if a field has an error

này
Các vấn đề liên quan