Salut,

Je travaille sur un projet web en J2EE, avec un serveur Tomcat.

J'utilise Spring MVC, je ne m'en sors pas avec les formulaires.

Je veux afficher une page :

Haut de la page : formulaire de recherche
Bas de la page : résultat de cette recherche

J'ai donc une seule et même vue. Voilà mon code :

spring.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
 
	<!-- couche métier -->
	<bean id="metier" class="metier.MetierImpl"/>
 
	<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
			<prop key="/subNatcoDvise.html">SubNatcoDviseController</prop>
			</props>
		</property>
	</bean>
 
	<bean id="SubNatcoDviseController" class="controlleur.NatcoDvise">
		<property name="commandName" value="form3"/>
		<property name="commandClass" value="form.Form3"/>
		<property name="formView" value="SubNatcoDvise"/>
		<property name="successView" value="SubNatcoDvise"/>
		<property name="metier" ref="metier"/>
	</bean>
Controlleur
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
 
 
public class NatcoDvise extends SimpleFormController
{
	// la couche métier
	private IMetier metier;
 
	/**
         * @return the metier
         */
	public IMetier getMetier() {
		return metier;
	}
 
	/**
         * @param metier the metier to set
         */
	public void setMetier(IMetier metier) {
		this.metier = metier;
	}
 
	protected Map referenceData(HttpServletRequest request)
	{
		// le dictionnaire
		Map data=new HashMap();
 
		// les options du combo
		data.put("combos", metier.getCombos());
 
		return data;
	}
 
	protected Object formBackingObject(HttpServletRequest request)
	{
		Form3 formulaire = metier.getFormulaire();
 
		return formulaire;
	}
}
Ma classe 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
 
public class Form3 {
	private String leName;
	private String combo;
 
	/**
         * @return the leName
         */
	public String getLeName() {
		return leName;
	}
 
	/**
         * @param leName the leName to set
         */
	public void setLeName(String leName) {
		this.leName = leName;
	}
 
	/**
         * @return the combo
         */
	public String getCombo() {
		return combo;
	}
 
	/**
         * @param combo the combo to set
         */
	public void setCombo(String combo) {
		this.combo = combo;
	}
 
 
}
L'interface de ma classe métier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
public interface IMetier {
	// instance de [Formulaire]
	public Form3 getFormulaire();
 
	// options de la liste déroulante
	public String[] getCombos();
}
L'implémentation de ma classe métier
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
 
public class MetierImpl implements IMetier {
 
	@Override
	public Form3 getFormulaire()
	{
		// création formulaire
		Form3 form3 = new Form3();
 
		// init formulaire
		form3.setLeName("leName qui va bien");
		form3.setCombo("val3");
 
		return form3;
	}
 
	@Override
	public String[] getCombos() {
		return new String[] {"val1", "val2", "val3"};
	}
 
}
Ma vue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
 
<form:form method="POST" commandName="form3">
	<form:input path="leName"/>
	<form:select path="combo" items="${combos}"/>
	<input type="submit" value="Submit"/>
</form:form>
Le formulaire s'affiche correctement, la liste est bien initialisée.
Je saisie des informations et je soumets le formulaire.

Lorsque je suis renvoyé sur la page résultat (la même donc), mon champ texte contient bien la valeur saisie, mais la liste est vide.

J'ai suivi le tutoriel Spring MVC de Serge Tahé, mais j'avoue ne pas tout comprendre.

Pouvez-vous m'aider ?