Struts 2 Les formulaires validation.xml

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

4 comments to Struts 2 Les formulaires validation.xml

  • Lazreg

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

  • Lazreg

    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]

  • Clem

    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 ?

  • Lazreg

    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