Bonjour,
Je réfléchis à un problème que je me suis posé, lequel est peut être sans solution. Je reviens sur mon application de gestion de championnats de sports collectifs.
En outre, je manipule des listes d'objets, je voudrais les gérer au moyen d'une liste de listes.
Voici l'objet Rencontre avec ses attributs, lesquels disposent chacun de leurs accesseurs :
L'attribut journee permet de répartir toutes les instances dans des ArrayList<Rencontre>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Rencontre implements Serializable { private static final long serialVersionUID = 1L; private Long OID = new Long(Constantes.UNDEFINED_INT); private Long OID_Equipe_R = new Long(Constantes.UNDEFINED_INT); private Long OID_Equipe_V = new Long(Constantes.UNDEFINED_INT); private String Label_Equipe_R = Constantes.UNDEFINED_STRING; private String Label_Equipe_V = Constantes.UNDEFINED_STRING; private int score_r = Constantes.UNDEFINED_INT; private int score_v = Constantes.UNDEFINED_INT; private Date date_match; private int journee = Constantes.UNDEFINED_INT; ... }
Jusqu'ici, quand une modification doit être faite sur l'application, il n'est possible de le faire journée par journée. L'idée est donc d'afficher sur une page HTML (donc une JSP) la totalité des journées afin de pouvoir modifier plusieurs journées (donc un seul un unique formulaire avec un bouton submit).
Je crée une classe ChampionnatForm héritant d'ActionForm, laquelle va me servir à afficher toutes les instances Rencontre classées par l'attribut journee :
Voici la page JSP qui affiche cette classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class ChampionnatForm extends ActionForm { private static final long serialVersionUID = 1L; private List<List<Rencontre>> lesMatches = new ArrayList<List<Rencontre>>(); private int nbJournees; private int nbEquipes; ... // tous les accesseurs sont présents }
Mon 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67 <%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="h" %> <%@ taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="b" %> <%@ taglib uri="/WEB-INF/tld/struts-logic.tld" prefix="l" %> <%@ taglib uri="/WEB-INF/tld/struts-nested.tld" prefix="n" %> <h:html> <head> <title><b:message key="application.nom"/></title> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1"> <link rel="stylesheet" type="text/css" href="css/style.css"> </head> <body> <h1>Championnat---</h1> <h:form action="/modifieChampionnat.do?method=modifier"> <n:iterate id="J" name="championnatForm" property="lesMatches" indexId="index"> <table class="match"> <tr> <th colspan="4"> <n:iterate id="B" name="J"> </n:iterate> Journée <n:write name="B" property="journee"/> </th> </tr> <tr> <th colspan="2">Locaux</th> <th colspan="2">Visiteurs</th> </tr> <n:iterate id="R" name="J"> <tr> <td class="droite"> <c:if test="${R.score_r > R.score_v}"> <span class="vainqueur"> </c:if> <n:write name="R" property="label_Equipe_R"/> <c:if test="${R.score_r > R.score_v}"> </span> </c:if> </td> <td class="centre"> <n:notEqual name="R" property="score_r" value="-1"><n:text size="1" name="R" property="score_r" style="centre"/></n:notEqual> <n:equal name="R" property="score_r" value="-1"><n:text size="1" name="R" property="score_r" style="centre" value=""/></n:equal> </td> <td class="centre"> <n:notEqual name="R" property="score_v" value="-1"><n:text size="1" name="R" property="score_v" style="centre"/></n:notEqual> <n:equal name="R" property="score_v" value="-1"><n:text size="1" name="R" property="score_v" style="centre" value=""/></n:equal> </td> <td class="gauche"> <c:if test="${R.score_r < R.score_v}"> <span class="vainqueur"> </c:if> <n:write name="R" property="label_Equipe_V"/> <c:if test="${R.score_r < R.score_v}"> </span> </c:if> </td> </tr> </n:iterate> </table> <div class="h10"> </div> </n:iterate> <div class="h10"> <h:submit styleClass="vert" value="Enregistrer"/> <input type="button" value="Retour" class="rouge" onclick="location.href='<b:message key="application.path"/>/accueil.do?method=init'"> </div> </h:form> </body> </h:html>
La classe appelant la page :
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 <form-beans> <form-bean name="championnatForm" type="presentation.bean.ChampionnatForm"/> </form-beans> ... <global-forwards> <forward name="resumeChampionnatJSP" path="/pages/resumeChampionnat.jsp"/> <forward name="/modifierChampionnatModifier" path="/modifieChampionnat.do?method=modifier"/> <forward name="/modifierChampionnatTerminer" path="/modifieChampionnat.do?method=terminer"/> </global-forwards> ... <action-mappings> <action path="/modifieChampionnat" name="championnatForm" type="presentation.accueil.ModifierChampionnat" parameter="method"/> </action-mappings> ...
Si tout s'affiche correctement, en revanche, aucune modification n'est prise en compte dès que je clique sur le submit.
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 public class ModifierChampionnat extends DispatchAction { Logger Log = Logger.getLogger(ConsulterChampionnat.class); public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ChampionnatForm unChampionnat = new ChampionnatForm(); unChampionnat.creerTable(Services.lireRencontres(), Constantes.UNDEFINED_INT); request.getSession().setAttribute("championnatForm", unChampionnat); return mapping.findForward(resumeChampionnatJSP); } ... }
D'où ma question : est-il possible de faire une gestion de liste de listes ? Si oui, que me manque-t-il pour que cela fonctionne ?
Merci par avance de vos réponses.
Partager