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
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 <!-- 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>
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
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; } }
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
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'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 public interface IMetier { // instance de [Formulaire] public Form3 getFormulaire(); // options de la liste déroulante public String[] getCombos(); }
Ma vue
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"}; } }
Le formulaire s'affiche correctement, la liste est bien initialisée.
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>
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 ?
Partager