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)
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