2010-11-12 10 views

Répondre

3

Ceci est essentiellement un moyen d'éviter de copier et coller un tas de HTML à plusieurs reprises, puis de modifier une douzaine de petits détails.

L'exemple de départ qu'ils donnent dans la documentation (que je sais que vous avez lu, mais qui I'l citer ici pour plus de commodité) est la suivante:

<p> 
    <label>&{'user.name'}</label> 
    <input type="text" id="user_name" name="user.name" value="${user?.name}" class="${errors.forKey('user.name') ? 'has_error' : ''}"> 
    <span class="error">${errors.forKey('user.name')}</span> 
</p> 

Si vous imaginez à partir de ce balisage sur votre page, puis en ajoutant un deuxième champ à la forme, vous auriez à copier/coller ce bloc entier et puis changer &{'user.name'}, user_name, user.name, ${user?.name}, user.name et user.name (chacune une référence séparée au même champ de base) juste pour obtenir le nouveau balisage à appliquer à votre nouveau champ.

Et c'est juste plus typé que certains d'entre nous sont prêts à entreprendre simplement pour ajouter un champ à une forme sacrée.

Le remplacement #{field 'foo'} permet est la suivante:

#{field 'user.name'} 
<p> 
    <label>&{field.name}</label> 
    <input type="text" id="${field.id}" name="${field.name}" value="${field.value}" class="${field.errorClass}"> 
    <span class="error">${field.error}</span> 
</p> 
#{/} 

L'avantage ici est que user.name apparaît exactement un seul endroit. Si vous deviez copier/coller ce balisage pour ajouter un autre champ, vous ne devriez en faire qu'un seul: celui de la balise #{field ...}. Le résultat final est qu'il est plus facile de développer un balisage standard pour les nombreux champs de votre formulaire sans avoir à faire beaucoup de remplacement manuel des étiquettes, noms, identifiants, valeurs actuelles, messages d'erreur, classes, etc.

+0

Maintenant, je l'ai eu, c'est un proxy - Merci! –

Questions connexes