Bonjour à tous,
Je travail actuellement à la réalisation d'un projet dans lequel certains paramètres sont saisies suivant les mois. Comme l'affichage ne se fait que sur 24 mois, l'application n'enregistre pas les mois suivants. La collection utiliser pour mon iterate est donc une collection composer via une fonction Java afin de créer les mois qui ne sont pas contenu dans la base de données mais qui doivent être affichés.
L'affichage fonctionne correctement, mais la collection reçu du formulaire ne contient aucune donnée (null);
J'ai tenté plusieurs solutions mais aucune ne parvient à résoudre le problème.
Code JSP :
Code Struts-XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <logic:iterate scope="request" name="listeMois" collection="<%=MoisAction.recupMois() %>" id="m" indexId="i"> <%if(i%2!=0){%><tr class="ligne_impaire"> <%} else {%> <tr class="ligne_paire"> <%} String idS= "id"+i;%> <html:hidden name="m" property="id" /> <td><bean:write property="mois" name="m"/>/<bean:write property="annee" name="m"/></td> <td><html:text name="m" property="nbJoursOuvres" /></td> <td><html:text name="m" property="tauxOccupation" />%</td> </tr> </logic:iterate>
Code ActionForm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <action path="/pages/forecast/domodifymois" type="casting.action.MoisAction" name="MoisForm" scope="request" validate="true" input="/pages/forecast/gestiondate.jsp" parameter="listeMois"> <forward name="failure" path="/pages/forecast/gestiondate.jsp" redirect="true"/> <forward name="success" path="/pages/forecast/gestiondate.jsp" redirect="true" /> </action>
Code Action
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 public class MoisForm extends DynaActionForm { private Vector<Mois> listeMois; public MoisForm() {} public Vector getListeMois() { return listeMois; } public void setListeMois(Vector listeMois) { this.listeMois = listeMois; } public Mois getMois(int i) { return (Mois)listeMois.get(i); } public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); System.out.println("Gestion Mois : \n" + getListeMois() ); return errors; } }
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 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MoisForm moisForm = (MoisForm) form; MoisManager moisMgr = new MoisManager(); if (moisForm.getListeMois() == null) { ActionMessages messages = new ActionMessages(); messages.add("mois", new ActionMessage("error.mois.null")); this.saveMessages(request, messages); return mapping.findForward("failure"); }else{ // Create object of ActionMesssages ActionMessages errors = new ActionMessages(); for (Iterator iterator = moisForm.getListeMois().iterator(); iterator.hasNext();) { Mois mois = (Mois) iterator.next(); if(mois.getId() == null){ moisMgr.saveMois(mois.getMois(), mois.getAnnee(), mois.getNbJoursOuvres(), mois.getTauxOccupation()); } else { moisMgr.updateMois(mois.getId(), mois.getMois(), mois.getAnnee(), mois.getNbJoursOuvres(), mois.getTauxOccupation()); } } return mapping.findForward("success"); } }
Merci d'avance si vous avez une piste pour m'aider.
Bonne journée.
Partager