je souhaite faire un formulaire sur plusieurs pages.

donc j'ai un premier formulaire 'loginForm.jsp' :

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
 
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>
 
<html:html>
<head>
<title>Page login</title>
</head>
 
<body>
 
<html:form action="/Input" method="post">
 
<nested:nest property="personne">
 
Login <nested:text property="login" /><br />
Mot de passe <nested:text property="mdp" /><br />
 
<html:submit value="Soumettre"/>
 
</nested:nest>
</html:form>
 
</body>
</html:html>
qui renvoie sur un deuxieme formulaire adresseForm.jsp :
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
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>
 
<html:html>
<head>
<title>Page adresse</title>
</head>
 
<body>
 
<nested:root name="loginForm">
 
<html:form action="/InputAdresse" method="post">
 
<nested:nest property="personne">
Login : <bean:write name="loginForm" property="login" scope="request" /><br>
Mot de passe : <bean:write name="loginForm" property="mdp" scope="request" /><br />
 
<nested:nest property="adresse">
 
Numero de rue : <nested:text property="numRue" /><br />
Rue : <nested:text property="rue" /><br />
Code postal : <nested:text property="codePostal" /><br />
Ville : <nested:text property="ville" /><br />
 
</nested:nest>
</nested:nest>
 
<html:submit value="Soumettre"/>
 
 
</html:form>
</nested:root>
 
</body>
</html:html>
j'ai donc des balises emboitées pour représenter les objets qui contiennent les attributs des deux formulaires.

L'objet 'Login' contient un objet 'Adresse'.

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
package technote.beans;
 
import java.io.Serializable;
 
public class Login implements Serializable {
 
	private String login;
	private String mdp;
	private Adresse adresse = new Adresse();
 
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		System.out.print("****** on passe dans setLogin(). ******");
		this.login = login;
	}
	public String getMdp() {
		return mdp;
	}
	public void setMdp(String mdp) {
		System.out.print("****** on passe dans setMdp(). ******");
		this.mdp = mdp;
	}
 
}
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
40
41
42
43
44
package technote.beans;
 
import java.io.Serializable;
 
public class Adresse implements Serializable {
 
	private String numRue;
	private String rue;
	private String codePostal;
	private String ville;
 
	public String getCodePostal() {
		return codePostal;
	}
 
	public void setCodePostal(String codePostal) {
		this.codePostal = codePostal;
	}
 
	public String getNumRue() {
		return numRue;
	}
 
	public void setNumRue(String numRue) {
		this.numRue = numRue;
	}
 
	public String getRue() {
		return rue;
	}
 
	public void setRue(String rue) {
		this.rue = rue;
	}
 
	public String getVille() {
		return ville;
	}
 
	public void setVille(String ville) {
		this.ville = ville;
	}
 
}
j'ai mappé dans le fichier de config:
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
<?xml version="1.0" encoding="UTF-8"?>
<struts-config>
  <form-beans>
    <form-bean name="loginForm" type="technote.actionform.LoginForm" />
  </form-beans>
  <action-mappings>
    <action path="/Input" 
    input="/pages/loginForm.jsp"  
    name="loginForm" 
    type="org.apache.struts.actions.ForwardAction" 
    parameter="/pages/adresseForm.jsp" 
    scope="request" />
    <action path="/InputAdresse" 
    name="loginForm" 
    input="/pages/adresseForm.jsp" 
    parameter="/pages/affiche.jsp" 
    scope="request" />
  </action-mappings>
  <message-resources parameter="MessageResources"/>
</struts-config>
Mais je vois pas bien comment créer le actionForm 'LoginForm.java' qui va bien. Dans un tuto, il instancient un objet Login, mais ce ne fonctionne pas 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
package technote.actionform;
 
import org.apache.struts.action.ActionForm;
import technote.beans.Login;
 
public class LoginForm extends ActionForm {
 
	private Login personne = new Login();
 
	public Login getPersonne() {
		return this.personne;
	}
 
	public void setPersonne(Login personne) {
		this.personne = personne;
	}
}
j'ai une erreur qui me dit que je n'ai pas de getter pour le form:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
No getter method for property: "login" of bean: "loginForm"
Est ce quelqu 'un peu m'aider pour avoir l'actionForm qui va bien ?