Ok

En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies. Ces derniers assurent le bon fonctionnement de nos services. En savoir plus.

« Franciser les messages | Page d'accueil | Diagramme de classe UML dans Grails »

06 février 2010

Mise en relief des champs obligatoires

 

Mise en relief des champs obligatoires

Étant donnée que nos objets de domaine indique par les contraintes si les propriétés sont obligatoires ou facultatives, on voudrait le refléter dans l'écran de saisie. Dans nos normes on affiche ces champs avec une étoile rouge.

La façon la plus simple est de se construire un tablib qui vérifie l'état de la contrainte isNullable et d'outputter une classe correspondante, qui se trouve dans le CSS.

Ainsi, si on modifie les contraintes dans la définition de la classe, la vue le reflète automatiquement.

Le taglib:

 

class UtilJDTagLib {

def utilHTML = { attrs, body ->

out << "${attrs['thru']}"

}

def utilOblig = { attrs, body ->

if (attrs['bean'].constraints.get(attrs['field']).isNullable())

{ out << 'facultatif'}

else {out << 'obligatoire' }

}

}

Dans la vue, il s'agit de rajouter notre taglib dans la classe de l'élément, par exemple dans la view Create.gsp du projet, ici le label.

<g:form action="save" method="post" >

<div class="dialog">

<table>

<tbody>

<tr class="prop">

<td valign="top" class="name">

<label for="numero" class="<g:utilOblig bean="${projetInstance}" field="numero" />"><g:message code="projet.numero" default="Numero" />:</label>

</td>

<td valign="top" class="value ${hasErrors(bean: projetInstance, field: 'numero', 'errors')} ">

<g:textField name="numero" value="${fieldValue(bean: projetInstance, field: 'numero')}" />

</td>

</tr>

<tr class="prop">

<td valign="top" class="name">

<label for="nom" class="<g:utilOblig bean="${projetInstance}" field="nom" />"><g:message code="projet.nom" default="Nom" />:</label>

</td>

<td valign="top" class="value ${hasErrors(bean: projetInstance, field:'nom', 'errors')} ">

<g:textField name="nom" maxlength="80" value="${fieldValue(bean: projetInstance, 'nom')}" />

</td>

</tr>

Ce qui donne à l'écran:

 

oblig01.jpg

 

 

 

16:57 | Lien permanent | Commentaires (0)