Utiliser DynaActionForm pour un formulaire
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 :yaisse2: .
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
Code:
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>
... |
Dans ce fichier j'ai défini mon formulaire frmPersonne avec ses 2 champs nom et age.
- classe PersonneDynaForm pour gérer ce formulaire :
Code:
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;
}
} |
- la page jsp dans laquelle est affiché le formulaire frmPersonne :
Code:
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