[Débutant] Gestion des erreurs
Bonjour à tous,
j'ai bien regardé comment gérer les erreurs de saisies dans mon formulaire ... grâce à la FAQ Struts ! :king:
Voici comment j'ai fait :
:arrow: Mon struts-config.xml :
Code:
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> |
:arrow: Dans ma Form :
Code:
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;
}
[...] |
:arrow: Ma JSP (avant) :
Code:
1 2 3
| [...]
<html:errors property="manufactNumberVide" />
[...] |
:arrow: Dans mon .properties (avant) :
Code:
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.
:arrow: Dans mon Action :
Code:
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");
} |
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" !
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 ?
:arrow: Ma page JSP (après) :
Code:
1 2 3 4
| [...]
<html:errors property="manufactNumberVide" />
<html:errors property="manufactNumberInexistant" />
[...] |
:arrow: Dans mon .properties (après) :
Code:
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 ! :oops:
Gôm