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

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>
 
...
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 : 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;
 
	}
 
}
- 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
 
 
...
 
	<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"/>&nbsp;-&nbsp;<html:reset value="Rétablir"/>&nbsp;-&nbsp;<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