Bonjour a tous , je suis confronté a une problématique assez répondu dont je ne trouve pas de solution efficace, j'ai lus pas mal de forum mais je n'arrive pas a résoudre mon problème.
j'ai 3 liste déroulantes donc la 2eme filtre par rapport à la 1er et la 3 eme par rapport a la 2eme.
je veux que lorsque je change de valeur dans la 1er liste lancer une requete Ajax pour filtré la 2eme liste et idem pour la 3eme
je précise que j'utilise struts2 V 2.1.1 et jquery
voici mon code
jsp
Mon action 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 <s:form id="MyForm" action="MyAction" method="POST" theme="css_xhtml"> <fieldset> <ol> <li> <s:select id="idListe1" name="liste1Selected" label="mylabel" labelposition="left" list="listeXX1" listKey="id1" listValue="libelle1" onchange="javascript:rafraichirListe();" /> </li> <li> <s:select id="idListe2" name="liste2Selected" label="mylabel2" labelposition="left" list="listeXX2" listKey="id2" listValue="libelle2"/> </li> <li> <s:select id="idListe3" name="liste3Selected" label="mylabel3" labelposition="left" list="listeXX3" listKey="id3" listValue="libelle3"/> </li> </ol> </fieldset>
Mon code JS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <action name="rafraichirAjax" class="MyAjaxAction" method="rafraichirListe"> <result name="input" >/jsp/test.jsp</result> <result name="success">/jsp/test.jsp</result> <result name="error">/jsp/test.jsp</result> </action>
Mon traitement dans la classe 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 function rafraichirListe() { var idListe1 = $('#idListe1').val(); $.ajax( { type : 'POST', url : 'rafraichirAjax.action', data : 'idListe1=' + idListe1, error : function() { alert(""); }, success : function(data) { var select = $('#idListe2'); select.replaceWith(data); } }); // } // } else { // alert(""); // } }
ceci ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public String rafraichirListe() throws Exception { try { liste2 = service.recupererListe2(idListe1); } catch (Exception ex) { return ERROR; } return SUCCESS; }en plus ce me rafraîchi toute la page.
merci pour votre aide
Partager