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 :
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> |
Le code JSP de mon tableau
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
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
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 , mais ça ne marchait pas.
maintenant je passe à mon ActionForm :
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
Partager