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 :
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&amp;module='+document.getElementById('TNUM_LIST_RCMODULE').value);"
			layoutId="TNUM_LIST_RCMODULE">
			<layout:options collection="listModule" property="value"
				labelProperty="label"></layout:options>
		</layout:select>
Le code JSP de mon tableau
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>
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.

La fonction AJAX
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();
		}
	}
}
Sur la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
document.getElementById('').value=tr;
, je ne sais pas quel est l'id de mon premier tableau de mon objet <layout:swap>. J'avais mis au départ
stdLayoutSwap0
, mais ça ne marchait pas.

maintenant je passe à mon ActionForm :
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);
		}
	}
Voilà j'espère avoir été assez précis.
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