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 :

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>
 
...
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
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;
    }
 
  ....
}
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
 
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;
    }
La classe LiensRubrique ne contient que des elements simples

JSP

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>
merci d'avance