Bonjour,
Je veux lier une liste afficher dans un tableau <layout:collection> à une zone de liste <layout:select>. J'utilise pour cela AJAX car je ne veux pas faire un submit() de mon formulaire.
Voici le code de ma JSP de ma zone de liste :
Le code JSP de mon tableau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <layout:select key="RcGroupefonctionFB.TNUM_LIST_RCMODULE" property="TNUM_LIST_RCMODULE" style="width:200px" onchange="AJAXReloadFonction('/gainde/rcGroupefonctionACT.do?reqCode=listFonctionByModule&module='+document.getElementById('TNUM_LIST_RCMODULE').value);" layoutId="TNUM_LIST_RCMODULE"> <layout:options collection="listModule" property="value" labelProperty="label"></layout:options> </layout:select>
A noter qu'ici c'est un <layout:swap> qui est concerné et que je ne veux interagir qu'avec le premier tableau de ce swap.
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 <layout:swap property="rccodefonction,rccodefonction" formProperty="ids1,ids2" selectedStyleClass="FORMSWAP"> <layout:collection name="list1" styleClass="FORM2"> <layout:collectionItem title="list1.codefonction" property="rccodefonction" /> <layout:collectionItem title="list1.libellefonction" property="rclibfonction" style="text-align:left;" /> </layout:collection> <layout:collection name="list2" styleClass="FORM2"> <layout:collectionItem title="list1.codefonction" property="rccodefonction" /> <layout:collectionItem title="list1.libellefonction" property="rclibfonction" style="text-align:left;" /> </layout:collection> </layout:swap>
La fonction AJAX
Sur la ligne
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 function AJAXReloadFonction(url,nameOfFormToPost) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = function () { if (req.readyState == 4) { if (req.status == 200) { var tr = ""+req.responseText; document.getElementById('').value=tr; } } }; req.open("POST", url, true); req.send(); } } }, je ne sais pas quel est l'id de mon premier tableau de mon objet <layout:swap>. J'avais mis au départ
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.getElementById('').value=tr;, mais ça ne marchait pas.stdLayoutSwap0
maintenant je passe à mon ActionForm :
Voilà j'espère avoir été assez précis.
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 public void listFonctionByModule(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws TwreException, IOException { ActionErrors errors = new ActionErrors(); ReferencesCommunsCmd referencesCommunsCmd = new ReferencesCommunsCmd(); RcGroupefonctionFB rcGroupefonctionfb = (RcGroupefonctionFB) form; GroupefonctionVO groupefonctionvo = new GroupefonctionVO(); String module = request.getParameter("module"); PrintWriter out = response.getWriter(); ListeFonc listeFonc = new ListeFonc(); Vector liste = new Vector(); ArrayList list1 = new ArrayList(); try { response.setContentType("text/html"); // récupérer la liste des fonctionnalités liste = referencesCommunsCmd .getListeFonctionnalitesByModule(module); System.out.println("RcGroupefonctionACT.listFonctionByModule()" + liste.size()); for (int i = 0; i < liste.size(); i++) { FonctionnalitesVO foncvo = new FonctionnalitesVO(); foncvo = (FonctionnalitesVO) liste.get(i); System.out.println("RcGroupefonctionACT.listFonctionByModule()" + foncvo.getRccodefonction()); list1.add(foncvo); } out.println(list1); out.flush(); request.setAttribute("list1", list1); rcGroupefonctionfb.setIds1(new String[list1.size()]); } catch (TwreException e) { errors.add("name", new ActionError(e.getMessage())); } finally { if (!errors.isEmpty()) saveErrors(request, errors); } }
Je récapitule ma question, je veux charger un tableau (FONCTIONNALITES, contenu dans un swap) à l'aide d'une zone de liste (MODULE). Et tout ça en AJAX.
Merci d'avance
Partager