Je rappelle l'objectif:
Réaliser la validation côté client et serveur sans écrire une ligne de code. Rien que de la configuration xml!

Voici donc les étapes à respecter scrupuleusement.

LES ETAPES DE LA VALIDATION DYNAMIQUE DE STRUST

  • Etape1. DECLARER LE FORMULAIRE

Dans le fichier struts-config.xml, déclarer un formulaire de type org.apache.struts.validator.DynaValidatorForm.
Exemple:

   <form-bean name="NOM_VOTRE_FORM_DANS_STRUTS" 
       type="org.apache.struts.validator.DynaValidatorForm">
	......		
    </form-bean>



Notez bien que le type est DynaValidatorForm ainsi que le nom du formulaire car il sera utilisé par la suite.

  • Etape2. CONFIGURER LA VALIDATION DANS L'ACTION ASSOCIEE AU FORMULAIRE


Toujours dans struts-config.xml, mettre validate="true" à l'intérieur de l'action qui utilise le formulaire précédent.
Retenez bien le path de l'action car il sera utilisé dans la jsp par la suite.

  • Etape3. ACTIVER LE PLUGIN VALIDATOR

Ajouter à la fin de struts-config.xml, le bloc suivant:

 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames"
	   value="/WEB-INF/validator-rules.xml, 
                  /WEB-INF/validation.xml" />
    <set-property property="stopOnFirstError" 
           value="false"/>
 </plug-in>



  • Etape4. AJOUTER DEUX FICHIERS XML DE VALIDATION

Déposer les deux fichiers cités dans l'étape précédent dans le répertoire WEB-INF de l'application web.
Sachez que vous pouvez les récupérer sur le net.

  • Etape5. AJOUTER LES REGLES DE VALIDATION

Dans le fichier /WEB-INF/validation.xml, préciser les règles de validation que struts doit appliquer au formulaire.
Par exemple,

 <form name="NOM_VOTRE_FORM_DANS_STRUTS"> 
   <field property="NOM_PROPERTY_DU_FORM" depends="required">
	<arg key="SECONDE_CLE_MESSAGE"/>
   </field>
 </form>



  • Etape6. METTRE A JOUR DES LIBRAIRIES PROJET

Si vous n'utilisez pas l'outil maven, vérifiez la présence de commons-validator-***.jar dans le répertoire lib du projet web.
D'autres jar peuvent être nécessaires à l'exécution.

  • Etape7. DEFINIR LES CLES DES MESSAGES

Ajoutez la clé pour les messages de l'étape 5.
D'abord celle-ci:

  errors.required={0}  est obligatoire


puis écrire la seconde clé nommée "SECONDE_CLE_MESSAGE" de l'étape 5.
NOTE. Le nom du fichier properties pour les messages est signalé dans struts-config.xml


  • Etape8. MODIFIER LEGEREMENT LA PAGE JSP


Dans la jsp du formulaire, ajouter le tag :

	<html:errors/>



  • Etape9. ACTIVER LA VALIDATION JAVASCRIPT (COTE CLIENT)


Dans la page jsp de l'étape précédente, ajoutez les deux blocs suivants.

1) Le premier bloc est à insérer juste après <html:errors/>:


  <html:javascript formName="NOM_VOTRE_FORM_DANS_STRUTS"/>



2)Le second bloc est à mettre comme suit:


   <html:form action="/xxxxx.do" 
     onsubmit="return validateNOM_VOTRE_FORM_DANS_STRUTS(this);" >


le xxxxx est le nom du path de l'action définie à l'étape 2. Attention à respecter la casse.
Par exemple, si le form de l'étape 1 est nommé myForm alors il faut écrire ceci:

  <html:form action="/xxxxx.do" 
     onsubmit="return validateMyForm(this);">
  ...



LES DIFFICULTES

Les problèmes sont nombreux lorsque vous utilisez la validation dynamique.
Le framework Struts n'est pas très verbeux lorsqu'il rencontre une configuration incomplète.
Auquel cas il pourrait ignorer la validation.
Voici par exemple des solutions pour certaines difficultés que vous pourriez rencontrer.

Si une erreur de configuration dans struts-config.xml, alors la validation sera ignorée par Struts.
Si vous n'activez qu'une partie de la validation javascript (étape 9) alors vous verrez la génération du javascript dans les pages jsp mais le contrôle javascript ne s'activera pas.

Si les clés des messages sont absentes, rien ne sera affiché et vous aurez l'impression qu'il ne se passe rien!

Soyez très RIGOUREUX sinon bonjour la galère!!
Et cette fois google ne pourra être votre ami...