2009-03-05 3 views
28

Discutiamo sul seguente esempio:Come funziona Spring MVC: tag di bind funzionante e quali sono i significati di status.expression e status.value?

<spring:bind path="user.userName"> 
    <input type="text" name="${status.expression}" value="${status.value}"/> 
    <span class="fieldError">${status.errorMessage}</span> 
</spring:bind> 

Quando questo frammento di vista viene resa, che cosa fare $ {} status.expression e $ {} status.value ottenere valutati per? Da dove vengono questi valori?

risposta

24

Vedere questo link per una spiegazione di cosa significano le variabili di stato.

  • status.expression: l'espressione che è stato utilizzato per recuperare il fagiolo o proprietà
  • status.value: il valore effettivo dei fagioli o di proprietà (trasformata utilizzando PropertyEditors registrati)
  • status.errorMessages: un array di messaggi di errore, risultante dalla convalida

L'oggetto di stato viene valutato w quando il legame è fatto.

Si ricorda inoltre che Spring 2.0 ha introdotto nuovi tag form, che sono probabilmente più adatti alle proprie esigenze.

+0

Grazie per il promemoria che il valore di 'status.value' è generato dal PropertyEditor registrati. Ho implementato un editor personalizzato per l'impostazione di una proprietà e ho omesso il metodo 'getAsText()'. Questo risulterà in stringhe '" null "! – Koraktor

6
+0

Grazie per averlo collegato, ma è terribilmente debole. Sarebbe bello se fossero collegati a [BindStatus] (http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/servlet/support/BindStatus.html) almeno . –