Bonjour à tous,
j'ai bien regardé comment gérer les erreurs de saisies dans mon formulaire ... grâce à la FAQ Struts !
Voici comment j'ai fait :
Mon struts-config.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <action path="/FormAffichMachine" name="formChoixMachine" scope="session" validate="true" input="/choixMachine.do" type="com.manitou.pad.ChoixMachineAction" > <forward name="succes" path="/vues/ficheMachine.jsp"/> <forward name="echec" path="/vues/choixMachine.jsp"/> </action>
Dans ma Form :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 [...] // Validation public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { // Gestion des erreurs ActionErrors erreurs = new ActionErrors(); // Le numéro de fabrication doit être un numérique, de longueur : 6 if (getManufactNumber() == null || getManufactNumber().length() < 6) { erreurs.add("manufactNumberVide", new ActionMessage("error.manufactNumber.vide")); } return erreurs; } [...]
Ma JSP (avant) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [...] <html:errors property="manufactNumberVide" /> [...]
Dans mon .properties (avant) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 errors.header=<span class="erreur"> errors.footer=</span> error.manufactNumber.vide=Numéro de fabrication <i>incorrect</i>.
Jusqu'ici ... TOUT VA BIEN !
Par contre lorsque l'utilisateur saisit un numéro de fabrication "logique" : nnnnnn (un entier de 6 chiffres), je fais un contrôle dans mon Action et j'essaye de générer un nouveau message d'erreur.
Dans mon Action :
Je suis obligé de faire comme cela, car ma méthode "validate" de mon Form n'a pas générer d'erreurs ... forcément la saisie de l'utilisateur est "logique" !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 if (id != 0) { // Récupération des données en BDD, puis affectation aux éléments de ma page JSP résultat return mapping.findForward("succes"); } else { // Gestion des erreurs ActionErrors erreurs = new ActionErrors(); erreurs.add("manufactNumberInexistant", new ActionMessage("error.manufactNumber.inexistant")); //return erreurs; return mapping.findForward("echec"); }
Vous suivez toujours ?!
MON PROBLEME est que la partie en rouge dans le dernier extrait de code, ne peut pas fonctionner ... on ne peut, évidemment pas, avoir deux "return" dans la même méthode !
MA QUESTION est donc : comment signaler à STRUTS qu'une nouvelle erreur a été détecté ? ou comment propager le "erreurs" jusqu'à ma page JSP ?
Ma page JSP (après) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [...] <html:errors property="manufactNumberVide" /> <html:errors property="manufactNumberInexistant" /> [...]
Dans mon .properties (après) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 errors.header=<span class="erreur"> errors.footer=</span> error.manufactNumber.vide=Numéro de fabrication <i>incorrect</i>. error.manufactNumber.inexistant=Numéro de fabrication <i>inexistant</i>.
Merci d'avance pour votre aide !
Gôm
Partager