2015-09-26 22 views
6

Ho il seguente modulo in primavera che mostra i messaggi di errore. Mi chiedo quando dovrei usare la primavera: legare? Che cosa lo contraddistingue? Ho studiato queste pagine a, b ma sono ancora perplesso.Qual è la differenza tra spring: bind e form: errori?

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

risposta

2

Nel suo secondo caso, spring:bind tag è obsoleto, la vostra prima forma

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

è una sorta di zucchero sintattico e l'equiva prestato senza utilizzare la libreria form tag, piuttosto solo i comuni tag modulo HTML, sarebbe basata su spring:bind e sarebbe simile:

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

Ci sono scenari in cui si può fare la differenza, per esempio form:input è sempre un bind a due vie, quindi il valore viene inviato al server e viene visualizzato il valore corrente, dove come con spring:bind è possibile ottenere un bind a senso unico, inviando solo al server, omettendo il valore es. <input type="text" name="${status.expression}">, ma il succo principale è che form libreria di tag fornisce una più convenienti legate legano tag

2

Con spring:bind, è possibile utilizzare ${status.error} per verificare se il campo name1 presenta un errore e visualizzare diversi classe CSS condizionale.
Il messaggio di errore viene ancora visualizzato tramite form:errors, ma in questo modo si ottengono più controlli.
per esempio:

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

e si può fare riferimento a questo Spring MVC Form – Check if a field has an error

Problemi correlati