|
Struts - Un framework MVC pour vos applications J2EE
5.3.DynaForms
On a vu jusque maintenant comment
lier les champs de nos formulaires, mais à aucun moment la
définition de la classe Form Bean correspondante.
En effet, si l’on utilise
Struts, il faut nécessairement lier chaque formulaire à
un bean ; c’est-à-dire à une classe Java
respectant certaines règles :
- un attribut pour chaque
propriété du formulaire avec le même nom
- un getter et un setter pour
chaque attribut du bean
Par ailleurs cette classe doit
étendre ActionForm. La classe ActionForm possède
en effet une méthode validate() qui va justement
permettre de définir le code validant ou non les champs du
formulaire.
Si l’on suit cette indication,
notre classe InscripForm est définie comme suit :

Cette classe contient des attributs correspondants aux propriétés
de notre formulaire InscripForm ainsi que des getters et des setters
pour chacun d’eux. Elle surdéfinit par ailleurs la
méthode validate() de la classe ActionForm afin
de faire les validations des différents champs du formulaire.
Rappelons que client.form.require.nom fait référence à
la clé se trouvant dans le fichier de properties(cf.3.6.1)
qu’on aura défini en amont. Le lien avec ce fichier se
fait dans le fichier de configuration struts-config.xml à
l’aide de la balise <message-resources> (cf.3.8.1).
Après avoir créé
notre Form Bean, revoyons le fichier struts-config.xml :

Le fait est que, si nous avons choisi
d’utiliser le framework Validator, c’est justement dans
le but d’éviter d’écrire les codes de
validations pour chaque formulaire puisqu’ils risquent d’être
redondants. C’est pourquoi un ensemble de validations standards
sont regroupés dans le fichier struts.jar. De plus, c’est
pour cela que nous avons regroupé toutes les définitions
des validations de champs dans le fichier validation.xml.
Ce que l’on veut, c’est
se servir de ces définitions et les mapper à notre Form
Bean.
Nous allons donc étendre la
classe ValidatorForm, sous-classe de la classe ActionForm.
Cette classe est incluse dans le framework Validator (on pourra le
trouver dans le fichier struts.jar, dans le package
org.apache.struts.validator).Voyons la nouvelle classe InscripForm :

Sa définition dans le fichier
struts-config.xml ne change pas :

Simplement, les validations des
champs vont se faire par rapport au fichier validation.xml. Le nom
défini dans l’attribut name est l’identifiant
qui permettra, de lier les champs du formulaire InscripForm aux
validators requis.
Nous avons déjà gagné
un temps non négligeable, puisque pour chaque formulaire, il
nous suffit de créer un Form Bean contenant des attributs
ainsi que leurs accesseurs. Mais nous allons encore simplifier la
chose. En effet, chaque fois redéfinir toutes ces méthodes
pour chaque champ est assez fastidieux.
Pour cela, nous n’allons plus
créer de Form Bean pour chaque formulaire mais utiliser les
DynaForms, c’est-à-dire définir nos balises <form
bean>de la manière suivante :

Avec cette nouvelle définition,
Struts va s’occuper lui-même de créer le Form
Bean. Nous ne devons que spécifier les propriétés
du formulaire ainsi que leurs types.
On a donc deux propriétés
à valider pour ce formulaire inscripForm, de types String et
initialisées à vide.
|
|
 |