1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 

Struts - Un framework MVC pour vos applications J2EE

5.2.Fichiers de configuration

5.2.1.Dans le fichier struts-config.xml

Ce framework de validation nécessite donc l’utilisation de deux fichiers de configuration que l’on va « déclarer », tels des plugins, dans le fichier struts-config.xml. Pour cela on va utiliser la balise <plug-in> et lui indiquer les chemins vers nos deux fichiers XML:

Définition de la balise <plug-in> :
plug-in
Élément racine de la définition. On a une balise plu-gin pour chaque "plugin" ajouté.
className : attribut de la balise plug-in, il permet de définir le chemin de la classe à instancier,interne ou externe à Struts. Cela signifie que l’on peut parfaitement créer son propre framework de validation voire un framework d’une toute autre utilité.
set-property
Si la classe instanciée (className) prend des arguments en paramètre, ils seront définis dans cette balise. On a donc une balise set-property pour chacun des arguments.
property : attribut de la balise set-property, il permet de spécifier le nom de l’argument.
values : attribut de la balise set-property, il permet de spécifier la valeur de l’argument défini dans property.
Nous venons donc de spécifier une nouvelle balise plug-in, tout comme on l’a fait pour les Tiles précédemment, et deux nouveaux fichiers.
Voyons donc plus en détail ce que sont ces fichiers et à quoi ils vont nous servir.

5.2.2.Le fichier validator-rules.xml :

Fourni avec le plugin, ce fichier XML défini les règles que l’on pourra utiliser pour tester les valeurs des champs. Il permet d’effectuer le lien entre le type de validation (champ requis, champ email …) et le chemin vers la méthode et la classe correspondante qui permettront d’effectuer l’opération de vérification des données (valeur du champs).
De base, Struts Validator gère les champs vides, les formats d’email ou de date invalides, les longueurs de champs minimum ou maximum, et bien d’autres encore.
Vous trouverez la description de toutes ces validations sur le site de la fondation Apache : http://struts.apache.org/userGuide/dev_validator.html dans la section "Standard Built In Validations".
Définition des balises du fichier validator-rules.xml :
form-validation
Élément racine du fichier.
global
Tous les éléments inclus dans la balise global seront accessibles par l’ensemble des formulaires (sorte de constantes)
validator
Définit chaque type de validation et le lie la méthode correspondante.
Attributs de la balise validator :
name : définit le nom logique de la validation.
classname : définit le chemin vers la classe contenant la méthode de validation correspondante.
method : définit le nom de la méthode de validation correspondante.
methodParams : type des arguments passés en paramètre.
msg : définit le message d’erreur à afficher en cas de non validation du champ.
depends : définit si la validation est obligatoire ou non.
jsFunctionName : définit le nom de la fonction javascript correspondante qui s’executera côté client
javascript
Définit le code de la fonction javascript qui s’exécutera côté client.
Nous allons voir une explication de l’un des "validator" fourni par défaut dans le fichier validator-rules de base.

Il s’agit ici du validator vérifiant qu’un champ est requis, c’est-à-dire qu’il vérifie que le champ n’est pas vide. On peut donc voir qu’il a été nommé "required", qu’il est rattaché à la méthode validateRequired de la classe FieldChecks. En cas de « non validation » du champ mappé à ce validator, le message d’erreur se trouvant un peu plus haut dans le fichier validator-rules.xml sera affiché :

Dans le cas présent, on aurait le message arg0 is required.

5.2.3.Le fichier validation.xml :

Une fois les différents types de validation définis, c’est dans le fichier validation.xml qui va nous servir a mapper les champs de nos formulaires aux validations définies dans validator-rules.xml.
Définition des balises du fichier validation.xml :
form-validation
Élément racine du fichier.
global
Entre ces balises vont être définies des informations qui seront accessibles, visibles par l’ensemble des formulaires de notre fichier (constantes).
constant
A chaque constante correspond une balise constant.
constant-name
Cette balise permet de définir le nom de la constante
constant-value
Cette balise permet de définir la valeur de la constante. On va pouvoir par exemple définir l’expression régulière définissant la valeur de cette constante
formset
Cette balise va englober tous les mappings de nos différents formulaires.
form
À chaque formulaire correspond une balise form.
name : attribut de la balise form, il permet de définir le nom du formulaire concerné. Ce nom correspond à celui défini dans le fichier struts-config.xml (attribut name de la balise form-bean).
field
À chaque champ du formulaire nécessitant une validation correspond une balise field.
property : attribut de la balise field, c’est ici que l’on va spécifier le nom de la propriété (champ) que l’on va lier à la ou les validations définie(s) dans validator-rules.xml. Ce nom de propriété est celui défini dans le Form Bean.
depends : attribut de la balise field, il permet de spécifier les noms des validations associées au champ property.
  • argn : balise interne à la balise field, elle permet de spécifier l’argument à donner au message d’erreur correspondant.
  • var : balise interne de la balise field, elle va permettre de préciser(si besoin est) une contrainte d’intégrité pour les validations spécifiées dans l’attribut depends.
    • var-name : balise interne de la balise var, on va spécifier le nom de la validation dont on veut donner la contrainte d’intégrité.
    • var-value : balise interne de la balise var, on va spécifier la contrainte d’intégrité (exemple : expression régulière,...).
Jusqu’à maintenant nous avons un fichier validator-rules.xml qui définit une liste de validations dont les classes (et donc méthodes) se trouvent dans les fichiers commons-validator.jar et jakarta-oro.jar.
On a par ailleurs un formulaire d’inscription(InscripForm) avec les champs nom(obligatoire), password(obligatoire, taille minimum de 4 caractères) et email(obligatoire, format d’email).
Nous souhaitons donc vérifier la validité de ces champs. Ceci va être fait dans le fichier validation.xml. C’est en effet ici que l’on va lier chacun de nos champs aux types de validations déclarées dans validator-rules.xml.
D’après les règles de la validation définies ci-dessus pour le formulaire InscripForm, on peut voir que l’on va utiliser les validators suivants (présents dans le fichier validator-rules.xml de base) : required, email et minlength.
Voici donc comment se présentera notre fichier validation.xml pour la partie concernant InscripForm :

Voyons l’explication du fichier ligne par ligne :
  • Toutes nos définitions sont englobées dans la balise racine form-validation.
Dans un premier temps, nous définissons une constante minPass. Elle définit la longueur minimum du mot de passe. On l’englobe dans une balise <global>, ce qui signifie qu’elle sera visible par toutes les définitions de formulaire qui vont suivre.
Nous avons besoin du champ password dans le formulaire InscripForm, et étant susceptible d’être réutilisé dans un autre formulaire, on a choisi de déclarer cette constante minPass avec une portée globale. Sachant que le champ password devra avoir une longueur supérieure à 4, la valeur de minPass est initialisée à 4.

  • La balise <formset> contient l’ensemble des validations des différents formulaires. Cela signifie que l’on aura une balise <form> pour chaque définition de formulaire. Dans notre cas, nous n’avons que InscripForm, nous avons donc une seule balise <form>.
Nous ouvrons donc la balise <form> et indiquons dans l’attribut name, l’identifiant de notre formulaire indiqué dans le fichier struts-config.xml, "inscripForm".
Le premier champ dont nous devons vérifier la validité est le champ nom, il est en effet obligatoire. L’objet que nous allons créer ici est un objet client. Dans la balise <field> est donc indiqué le nom de la propriété concernée, c’est-à-dire nom. Étant un champ obligatoire, on ajoute le validator required(cf :valitor-rules.xml) pour l’attribut depends.
On vient donc de lier le champ nom du formulaire au validator required.
En cas d’erreur de validation, le message arg0 is required sera affiché (chapitre sur validator-rules.xml ). Afin de spécifier justement le nom qui sera affiché pour arg0, on utilise la balise <argn> avec 0 pour la valeur de n. La valeur de arg0 est défini dans l’attribut key, il s’agit de la valeur de client.form.require.nom du fichier de properties.
On vient maintenant de définir plus précisément le message d’erreur.

  • Nous allons agir de la même manière que pour le champ nom avec le champ password. Ce champ est obligatoire et doit être d’une longueur minimum de 4 caractères. L’attribut depends a donc pour valeurs required et minlength.
Afin de spécifier la valeur de minlength, on utilise la balise <var>. <var-name> nous permet de spécifier le nom du validator concerné et <var-value>, la valeur, justement que l’on va affecter à ce validator.
Précédemment, nous avons spécifier que la constante minPass a été initialisée en début de fichier, avec une portée globale. Nous réutilisons donc cette constante afin de l’affecter à minlength.

  • Les validators pour les champs nom et password viennent donc d’être définis. Il ne reste que le champ email dont la démarche est la même. Simplement les validators concernés sont required et email (toujours du fichier validator-rules.xml).

Nous venons donc de :
  • initialiser le plug-in Validator dans le fichier struts-config.xml et fait les liens avec les fichiers validation.xml et validator-rules.xml.
  • définir les différentes validations dans le fichier validator-rules.xml en faisant les liens avec les classes concernées.
  • définir les validations à faire sur les champs de notre formulaire en faisant les liens entre ces champs et les validators (définis dans validator-rules.xml), dans le fichier validation.xml.
Cependant, nous n’avons pas parlé des Form beans ; en effet, la classe associée à notre formulaire InscripForm doit étendre la classe DynaActionForm, classe fille de la classe ValidatorForm.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 

Retrouvez ci-dessous les autres sections du Laboratoire Sun
Exemples de code
JavaManipuler les looks and feel (lister et affecter)10/15/07
JavaFaire sa propre injection de dépendance avec les annotations5/9/06
JavaSplash screen avec progress Bar5/5/06
JavaFaire un splash screen en swing5/5/06

Essentiels de cours Java
JavaEJB 3 - Les Entreprise Java Bean version 3 (JavaBeans)
Cet essentiel est la suite de « Entreprise JavaBean 2.1 ». Cependant, nous allons étudier les nouvelles spécifications 3.0 qui simplifient énormément le développement par rapport aux EJB 2.6/20/06
JavaSWT - Créer des interfaces graphiques performantes
SWT (Standard Widget Toolkit) est une librairie graphique qui vous permet de réaliser des applications graphiques Java beaucoup plus avancées et surtout plus rapide à l’exécution.1/29/06
JavaStruts - Un framework MVC pour vos applications J2EE
Struts est un framework open-source qui vous permet de gagner du temps, mais qui permet aussi de voir des applications complexes comme une suite de composants de base : Vues, Actions, Modèles. Vous gagnez ainsi en évolutivité et en lisibilité du code.1/13/06
JavaHibernate - Persistance objet - relationnel
Cet essentiel explique comment utiliser Hibernate afin de gérer la persistance objet relationnel au sein de vos applications Java.12/14/05
JavaIntroduction J2EE - Applications d'entreprise
Cours d'introduction aux diverses technologies et outils que l'on peut rencontrer dans le monde du Java orienté entreprise J2EE12/14/05
JavaEJB 2 - Les Entreprise Java Bean (JavaBeans)
L'objectif avec EJB2 (Entreprise JavaBeans) est d'introduire les concepts de l’Ingénierie Logicielle Basée sur les Composants.12/14/05
JavaDesign Patern - Améliorez l'architecture de vos programmes
Afin de répondre a des situation récurrentes en programmation, les "design partern" apportent une solution type à beaucoup de contraintes liées à la programmation objet.12/14/05
JavaArchitecture J2EE - Comment organiser son application J2EE
Ce cours explique comment créer un code modulable, lisible et évolutif afin d'assurer la pérénité de son application.12/14/05
JavaLes web-services - Publication de services
Le développement tend vers les technologies du Web. Il est difficile de faire la distinction entre les différents logiciels qui sont de plus en plus intégrés au Web. Les Web Services rentrent dans l’optique de différencier bien précisément les couches.12/14/05
JavaAnt - L'automatisation des tâches du programmeur
Ecrire des scripts afin d'exécuter les tâches récurrentes10/31/05
JavaIntroduction au langage Java - Présentation & historique
Présentation des origines du langage, ainsi que se buts premiers8/11/05
JavaLa Syntaxe Java - Bases & nomenclatures
Bases de la syntaxe du langage Java8/11/05
JavaLes Classes - Concepts & héritage
Base du développement objet en Java grâce aux classes8/11/05
JavaLes Exceptions - Gestion d'erreurs
Gérer les erreurs liés à la programmation8/11/05

Articles
Eclipse Europa : le successeur de Callisto
Après Eclipse Callisto (Eclipse 3.2), la fondation Eclipse sort la nouvelle mouture d'Eclipse appelée Europa (Eclipse 3.3) faisant ainsi passer le nombre de projets embarqués de 10 à 21. Que ceux qui sont réticents aux « distributions » d'Eclipse se rassu12/21/07
JavaCruiseControl : l’outil d’intégration continue à avoir dans sa boite à outils
CruiseControl est un projet open-source offrant de multiples fonctionnalités pour l’intégration, que ce soit pour des développements Java ou .Net. Il est courant sur un projet d’être plusieurs développeurs avec des tâches de développement réparties. Dans7/2/07
JavaEJB3 - Des concepts à l'écriture du code - Editions DUNOD
Consulter le résumé du premier ouvrage du laboratoire Sun de SUPINFO : EJB3 - Des concepts à l'écriture du code. Guide du développeur, éditions DUNOD.5/27/07
JavaPassage de certification Java Web (SCWCD)
Passer une certification est toujours un moment important car cela permet de mieux faire reconnaître ses compétences face à un recruteur ou un employeur.5/12/07
JavaGoogle Web Toolkit
Google Web Toolkit est un framework java pour générer du javascript et des requêtes Ajax à partir d’un code java. Voilà comment il fonctionne.5/10/07
JavaJ2ME Vs SDE
Demain, les terminaux « légers » seront plus nombreux que les ordinateurs personnels, ce qui entraîne une bataille sur le choix d’une plateforme identique à tous ces terminaux… Aujourd’hui nous retrouvons le J2ME ainsi que le SDE qui s’offrent une rude b4/22/07

Tips du laboratoire
EclipseVisual Editor avec Eclipse Europa, c'est possible3/28/08
EclipseGérer les projets dans un workspace.10/16/07
JavaManager votre server d'application avec Eclipse4/21/07
JavaVue des sub-packages avec Eclipse4/21/07
JavaGlisser-déposer avec Eclipse4/21/07

Laboratoire SUPINFO des technologies Sun
labo-sun@supinfo.com


Conditions d'utilisation et © Copyright SUPINFO International University
23, rue de Château Landon - 75010 PARIS - Tél : +33 (0) 153359700 Fax : +33 (0) 153359701
Respect de la vie privée