Bonjour,
Je débute avec struts et après quelques difficultés pour la configuration, je suis enfin arrivé à faire tourner quelques exemples basiques d'applications .
J'ai vu qu'on pouvait utiliser la classe DynaActionForm pour gérer des formulaires sans avoir à créer l'ensemble des getters / setters à la main comme on doit le faire avec ActionForm.
J'ai donc fait les configurations suivantes :
- fichiers struts-config.xml
Dans ce fichier j'ai défini mon formulaire frmPersonne avec ses 2 champs nom et age.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ... <form-beans> <form-bean name="frmPersonne" type="fr.personne.PersonneDynaForm" scope="session"> <form-property name="nom" type="java.lang.String" initial=""/> <form-property name="age" type="java.lang.String" initial=""/> </form-bean> </form-beans> ...
- classe PersonneDynaForm pour gérer ce formulaire :
- la page jsp dans laquelle est affiché le formulaire frmPersonne :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 package fr.personne; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; public class PersonneDynaForm extends DynaActionForm{ public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){ ActionErrors erreurs = new ActionErrors(); String nom = (String) this.get("nom"); String age = (String) this.get("age"); if(nom == null || nom.trim().equals("")){ erreurs.add("nomvide", new ActionError("personne.formulaire.nom.vide")); } if(age == null || age.trim().equals("")){ erreurs.add("agevide", new ActionError("personne.formulaire.age.vide")); }else{ if(!age.matches("^\\s*\\d+\\s*$")) erreurs.add("ageincorrect", new ActionError("personne.formulaire.age.incorrect", age)); } return erreurs; } }
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
23
24
25 ... <body> <h2>Formulaire - Personne</h2> <hr> <html:form action="/main" name="frmPersonne" type="fr.personne.PersonneDynaForm"> <table> <tr> <td>Nom</td> <td><html:text property="nom"/></td> </tr> <tr> <td>Age</td> <td><html:text property="age"/></td> </tr> </table> <br/> <html:submit value="Envoyer"/> - <html:reset value="Rétablir"/> - <html:button property="btnEffacer" value="Effacer" onclick="javascript:effacer();"/> </html:form> <br/> </body> ...
Lorsque je tente d'accéder à ma page où se trouve le formulaire frmPersonne, j'obtiens une erreur me disant en gros qu'il n'arrive pas accéder à la propriété nom du formulaire.
Cela est normal en fait car le controleur doit tenter d'utiliser la propriété nom puis age de PersonneDynaForm mais ces propriétés n'existent pas encore à ce moment là s'il y a une erreur.
Comment doit je procéder pour configurer mon formulaire dans la page jsp ?
Merci d'avance de votre aide.
Sylvain
Partager