Bonjour,
Je bloque sur le problème suivant :
J'ai un formulaire avec des listes de selection dont le contenu est récupéré dans une BD par une première action "actionModifUtilisateur", une deuxième, "actionValideModifUtilisateur" étant chargé de récupérer les changement et mettre à jour la BD :
La page modifUtilisateur.jsp contient le code suivant pour la liste :
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 <form-bean name="formModifUtilisateur" type="FormModifUtilisateur"/> <action name="formModifUtilisateur" path="/actionModifUtilisateur" scope="request" validate = "false" type="ActionModifUtilisateur"> <forward name="succes" path="/modifUtilisateur.jsp"/> <forward name="echec" path="/com_echec.jsp"/> </action> <action input="/modifUtilisateur.jsp" name="formModifUtilisateur" path="/actionValidModifUtilisateur" scope="request" validate="true" type="ActionValidModifUtilisateur"> <forward name="succes" path="/modifUtilisateur.jsp"/> <forward name="echec" path="/com_echec.jsp"/> </action>
FormModifUtilisateur.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <html:select styleId="listeUtilisateurs" property="listeUtilisateurs"> <html:optionsCollection property="nomsUtilisateurs" value="value" label="label" /> </html:select>
J'obtient ainsi un formulaire avec une liste déroulante proposant la liste des nom d'utilisateurs de la BD.
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 Collection<String> listeUtilisateurs = new ArrayList<String>(); public Collection<String> getListeUtilisateurs(){ return this.listeUtilisateurs; } public void setListeUtilisateurs( Collection<String> listeUtilisateurs){ this.listeHobbies = listeHobbies; } private Collection<LabelValueBean> nomsUtilisateurs = new ArrayList<LabelValueBean>(); public Collection<LabelValueBean> getNomsUtilisateurs(){ return this.nomsUtilisateurs; } public void setNomsUtilisateurs( Collection<LabelValueBean> nomsUtilisateurs){ this.nomsUtilisateurs = nomsUtilisateurs; }
J'ai ensuite ajouté volontairement une erreur dans l'objet ActionErrors retourné par la méthode validate.
Ce que j'aimerais, lorsqu'il y a des erreurs de saisi dans le formulaire, c'est retrouver mon formulaire inchangé, avec les listes de selections générée à la première création du formulaire.
Je suis pour l'instant passé par toute sorte d'exception, celle que j'ai actuellement étant :
Je ne pense pas avoir une assez bonne vision globale du fonctionnement de struts et je doit mal m'y prendre, mais j'ai beau écumer le web, je ne trouve pas de réponse qui résolve mon problème.
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 exception javax.servlet.ServletException: BeanUtils.populate org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254) org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368) cause mère java.lang.IllegalArgumentException: argument type mismatch sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:1789) org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.java:1684) org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:1713) org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019) org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808) org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252) org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
Partager