Bonjour à tous,
Je suis nouvel utilisateur de Struts2 (avec Hibernate), et je rencontre des problèmes concernant la validation de mes formulaires.
Ci dessous, les fichiers concernés (tous dans le package fr.view) :
ClientAction.java
ClientAction.properties :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class ClientAction extends ActionSupport { // Accesseurs, données membres etc... public String readAll() { clientsList = new ArrayList<Client>(); clientsList = clientManager.selectAll(); return SUCCESS; }
ClientAction-validation.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 errors.invalid=${getText(fieldName)} non valide. errors.required=${getText(fieldName)} est obligatoire. errors.number=${getText(fieldName)} doit etre compose de chiffre. errors.range=${getText(fieldName)} doit etre plus recent que le ${min}.
struts.xml
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
16
17
18
19
20
21
22 <?xml version="1.0" encoding="UTF-8"?> <!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="client.nom"> <field-validator type="requiredstring"> <param name="trim">true</param> <!-- <message>Nom requis</message>--> <message key="errors.required" /> </field-validator> </field> <field name="client.prenom"> <field-validator type="requiredstring"> <param name="trim">true</param> <!-- <message>Prénom requis</message>--> <message key="errors.required" /> </field-validator> </field> </validators>
En voulant afficher ma page /dossier/clients (qui va appeler mon action "getAll") j'ai l'erreur : No result defined for action fr.view.ClientAction and result input. J'ai bien compris que c'est parce que je n'avais pas mis le <result name="input"> . Je l'ai mis, ma page /dossier/clients s'affiche bien.
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
16
17
18
19
20
21 <package name="Client" namespace="/dossier/clients" extends="struts-default"> <!-- Action de l action de référence --> <default-action-ref name="getAll" /> <!-- ***** AFFICHAGE DES PAGES ************--> <action name="getAll" class="fr.view.ClientAction" method="readAll"> <result name="success" type="redirect"> <param name="location">/content/dossier/clients/getAll.jsp</param> </result> </action> <!-- ***** ACTIONS DES PAGES ************--> <action name="client_*" class="fr.view.ClientAction" method="{1}"> <result name="success">/content/dossier/clients/result/success.jsp</result> <result name="error">/content/dossier/clients/result/error.jsp</result> <!-- <result name="input">/content/dossier/clients/add.jsp</result>--> </action> </package>
Mais probleme : dans mon <action name="getAll"> j'appelle (en théorie) une méthode "readAll()" de ma classe ClientAction. Or, je remarque qu'elle n'est plus appelée, ce qui me plante donc le fonctionnement de mon application ...
Ma question est simple : comment faire pour tout faire fonctionner s'il vous plait ?
J'ai l'impression que j'ai du mal configurer mon struts.xml, car je me sers d'action pour faire un simple affichage de page ("getAll" par exemple, mais j'en ai d'autres), je me serais trompé quelque part ?
Merci à tous.
Partager