Bonjour
voici mon problème. J'ai une action (DisplayFooter qui est associée à une ActionForm appelée FooterForm) qui parse un fichier et qui remplit une collection d'objet qu'on affiche ensuite dans une jsp (footer.jsp)
Jusque là pas de souci.
Les informations affichées dans la JSP sont modifiables.
Mon problème est que lorsque je soumet mes modifications(appelle de l'action UpdateFooterAction ) , elles ne sont pas recuperées dans mon ActionForm (FooterForm)
Je recapitule la cinematique :
DisplayFooterAction => footer.jsp => UpdateFooterAction
la classe UpdateFooterAction appelle la méthode validate du FooterForm
et quand je parse les infos dans la methode validate je n'ai que les anciennes valeurs des objets ListeRubriquesFooter récupérées dans la classe DisplayFooterAction .
En revanche l'info rubriqueName est bien mise à jour avec la nouvelle saisie par l'utilisateur
Voici un extrait du code
Struts-config.xml :
Mon Form(je n'ecrit que les autres proprietes qui peuvent poser probleme)
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 //declaration du bean ... <form-bean name="footerRubriquesForm" type="com.goom.backoffice.struts.form.cgufooter.FooterForm"> </form-bean> ... //declaration des actions .... <action path="/displayfooter" name="footerRubriquesForm" scope="session" type="com.goom.backoffice.struts.action.cgufooter.DisplayFooterAction" validate="false"> <forward name="DISPLAY_FOOTER" path="/jsp/cgufooter/footer.jsp" ></forward> </action> <action path="/updateFooter" name="footerRubriquesForm" scope="session" input="/jsp/cgufooter/footer.jsp" type="com.goom.backoffice.struts.action.cgufooter.UpdateFooterAction" validate="false"> <forward name="UPDATE_FOOTER_SUCCESS" path="/jsp/cgufooter/footer.jsp" ></forward> </action> ...
Ma classe RubriqueFooter
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 FooterForm extends ActionForm { private List<RubriqueFooter> rubriquesFooter = new ArrayList<RubriqueFooter>(); public RubriqueFooter getRubriquesFooter(int i) { int listObjSize = rubriquesFooter.size(); // check if object exists at specified index if ((i + 1) > listObjSize) { // add objects for (int j = listObjSize; j < i + 1; j++) { RubriqueFooter beanObj = new RubriqueFooter(); rubriquesFooter.add(j, beanObj); } } // get and return object at this index return (RubriqueFooter) rubriquesFooter.get(i); } public void setRubriquesFooter(int i,RubriqueFooter element) { rubriquesFooter.set(i, element); } public List<RubriqueFooter> getListeRubriquesFooter() { return rubriquesFooter; } public void setListeRubriquesFooter(List<RubriqueFooter> rubriquesFooter) { this.rubriquesFooter = rubriquesFooter; } .... }
La classe LiensRubrique ne contient que des elements simples
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 public class RubriqueFooter { private String rubriqueName; private List<LienRubrique> liensRubrique = new ArrayList<LienRubrique>(); public RubriqueFooter() { } public String getRubriqueName() { return rubriqueName; } public void setRubriqueName(String rubriqueName) { this.rubriqueName = rubriqueName; } public List<LienRubrique> getLiensRubrique() { return liensRubrique; } public void setLiensRubrique(List<LienRubrique> liensRubrique) { this.liensRubrique = liensRubrique; }
JSP
merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <nested:iterate property="listeRubriquesFooter" name="footerRubriquesForm" > <ul style="float: left; display: inline;list-style-type: none;padding-left:29px;margin-left:0px;"> <li style="width: 150px; display: inline;"> <nested:text property="rubriqueName" style="color:green"></nested:text> </li> <nested:iterate property="liensRubrique" name="listeRubriquesFooter"> <li> <nested:text property="lienRubrique" ></nested:text> </li> </nested:iterate> </ul> </nested:iterate>
Partager