[Struts 1.3] Probleme recuperation formulaire
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:
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:
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:
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:
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