Validation des données entrées dans un formulaire en utilisant le fichier -validation.xml. 
Dans ce billet, on reprend le projet de Struts 2 – les formulaires (part 1):  struts2-test01.war (1)
struts2-test01.war (1)
 struts2-test01.war (1)
struts2-test01.war (1)Après avoir créée notre formulaire, nous allons vérifier les données entrées par l'utilisateur pour s'assurer qu'elles ont bien le format demandé.
| Commençons par implémenter les futurs messages d'erreur dans les fichers properties: | 
package_fr.properties :
ajouter les entrées suivantes:
| isrequired=est requis. required.email=${getText('register.email')} ${getText('isrequired')} required.nom=${getText('register.nom')} ${getText('isrequired')} required.mdp=${getText('register.mdp')} ${getText('isrequired')} required.age=${getText('register.age')} ${getText('isrequired')} invalid.email=${getText('register.email')} n''est pas valide invalid.age=${getText('register.age')} doit être compris entre ${min} et ${max}. | 
package_en.properties :
ajouter les entrées suivantes:
| isrequired=is required. required.email=${getText('register.email')} ${getText('isrequired')} required.nom=${getText('register.nom')} ${getText('isrequired')} required.mdp=${getText('register.mdp')} ${getText('isrequired')} required.age=${getText('register.age')} ${getText('isrequired')} invalid.email=${getText('register.email')} is not valid. invalid.age=${getText('register.age')} must be between ${min} and ${max}. | 
| Validation: | 
Pour défaut, Struts nous offre une méthode de validation par l'intermédiaire d'un fichier "-validation.xml".
Le nom de ce fichier doit avoir la forme suivante:
[nom de la classe action]-validation.xml
ou
[nom de la classe action]-[nom de l'action]-validation.xml
Dans notre projet, la classe action associée au formulaire d'enregistrement est RegisterAction.java.
Dans le package fr.tuto.beanAction, créer le fichier RegisterAction-validation.xml
Edit:
si vous avez l'erreur suivante sur le fichier RegisterAction-Validation.xml : 
"Referenced file contains errors (http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd)"
remplacez l'adresse du .dtd par :
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"
RegisterAction-validation.xml
| <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="user.email"> <field-validator type="requiredstring"> <message key="required.email"/> </field-validator> <field-validator type="email"> <message key="invalid.email"/> </field-validator> </field> <field name="user.nom"> <field-validator type="requiredstring"> <message key="required.nom"/> </field-validator> </field> <field name="user.mdp"> <field-validator type="requiredstring"> <message key="required.mdp"/> </field-validator> </field> <field name="user.age"> <field-validator type="required"> <message key="required.age"/> </field-validator> <field-validator type="int"> <param name="min">18</param> <param name="max">99</param> <message key="invalid.age"/> </field-validator> </field> </validators> | 
Ici, chaque champs du formulaire est vérifié.
Les types sont prédéfinis par Struts:
- 
"requiredstring", n'autorise pas un champs vide.
- 
"email", le champs doit avoir la forme d'un email.
- 
"required", champs requis pour les données autre que de type String
- 
"int", permet de valider la donnée dans un intervale.
Pour plus de détails: http://struts.apache.org/2.0.14/docs/validation.html
| Résultat: | 

| Précision sur les messages d'erreur: | 
Dans Welcome.jsp, à la suite du formulaire, ajoutez le code suivant:
Cela permet d'afficher le message d'erreur d'une des valeurs du formulaire.
| <s:fielderror > <s:param>user.email</s:param> </s:fielderror> | 
Si on ne précise pas de paramètre, cela affiche tous les messages d'erreur:
| <s:fielderror /> | 
Dans l'article Struts 2 Les formulaires validate() , nous verrons une autre façon de valider notre formulaire.
———————————————-
(1)Ce .war ne contient pas les librairies.
Ajoutez les librairies du projet struts2-blank.war dans WebContent/WEB-INF/lib du projet struts2-test01
        
        
bonjour et merci pour le tutos
j’ai un problème de validation(avec RegisterAction-validation.xml), eclipse met une crois rouge sur la 1ère ligne de ce dernier.
c est la même chose pour le projet struts2-blank(au niveau de fichier Login-validation.xml).
en plus je suis débutant en struts , je sui bloqué. merci de me faire part de la solution (ou de quoi il s’agit ?)
14 juin 2011 17:06:31 com.opensymphony.xwork2.util.logging.jdk.JdkLogger error
GRAVE: Caught exception while loading file fr/tuto/beanAction/RegisterAction-validation.xml
Connection refused: connect – [unknown location]
Salut,
pour ma part, au niveau du fichier xxx-validation.xml, j’ai l’erreur du type « Referenced file contains errors ».
Dans le DOCTYPE de RegisterAction-validation.xml, il faut mettre à jour l’adresse du fichier .dtd:
remplacer:
« http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd »
par:
« http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd »
Est-ce que ça fait avancer l’affaire ?
Salut
merci pour votre aide, mais vraiment je n’ai rien compris maintenant elle fonctionne avec le DOCTYPE de RegisterAction.xml « http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd » .
je vaudrais savoir la différence entre ces deux classes du filter:
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
—–
org.apache.struts2.dispatcher.FilterDispatcher
et merci encore une fois