Salut à tous!
J'ai un petit souci d'affichage avec Ajax :
Je rafraichis le "div" suivant grâce à Ajax :
voici le code de ma jsp qui est incluse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <div id = "divUpdateResultSearch"> <%@ include file="searchControlResult.jsp" %> <script> initDataElement() </script> </div>
Voici mon code js :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 <c:if test="${sessionScope.searchResult!=null}"> <br><br> <table> <tr> <td> <c:forEach var="resultat" items="${sessionScope.searchResult}"> <div class="recherche"> <h3 class="resultatnom"><center><c:out value="${resultat.name}"/></center></h3> <table> <c:forEach var="field" items="${resultat.fields}"> <tr> <td> <c:out value="${field.name}"></c:out> </td> <td> <table class="resultatfield"> <tr> <c:forEach var = "valeur" items="${field.values}"> <td> <c:out value="${valeur}"></c:out> </td> </c:forEach> </tr> </table> </td> </tr> </c:forEach> </table> </div> </c:forEach> </td> <td valign="top"> <table> <tr> <center> <td><h4 class="titre"><bean:message key="search.manageElement"/></h4></td> <td></td> </center> </tr> <% // get the ApiIdex ApiIdexAnne apiIdex =ApiIdexAnne.getInstance(); //ArrayList list = apiIdex.getLabelCommandEnabledOnElement(session.getAttribute("idElement").toString()); ArrayList list = apiIdex.getCommandEnabledOnElement(session.getAttribute("idElement").toString()); System.out.println("JSP update => size = "+list.size()); for(int i=0;i<list.size();i++){ TupleCommandParam tupleCommad = (TupleCommandParam)list.get(i); System.out.println("JSP update => boucle = "+i+" command = "+tupleCommad.getLabelCommand()); %> <tr> <% if(tupleCommad.getParametersFacultatives()!=null && ((ArrayList)tupleCommad.getParametersFacultatives()).size()!=0){ %> <html:form action= "/searchControl"> <center> <td align="center"> <button type="submit" class="commande" onclick="testValueNotNull(this);" > <span class="commandetexte"><%=tupleCommad.getLabelCommand()%></span> </button> </td> <td> <html:hidden property="whatToDo" value="command"/> <html:text property="paramFacultative" value=""/> <html:hidden property="idCommand" value="<%=tupleCommad.getIdCommand()%>"/> </td> </center> </html:form> <% } else { %> <html:form action= "/searchControl" > <center> <td align="center"> <button type="submit" class="commande" onclick="submit()" > <span class="commandetexte"><%=tupleCommad.getLabelCommand()%></span> </button> </td> <td> <html:hidden property="whatToDo" value="command"/> <html:hidden property="idCommand" value="<%=tupleCommad.getIdCommand()%>"/> </td> </center> </html:form> <%}%> </tr> <%}%> </table> </td> </tr> </table> </c:if>
Mon souci est le suivant :
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
68 var refreshDataElement = 5000 ; //Période de mise à jour des données, en milisecondes. var requestDataElement = null; // Objet XMLhttpRequest necessaire pour récupérer les données. var dataElement = null; var getDataElementTimeoutId = null; /* * initialisation de recuperation periodiique des events */ function initDataElement() { getDataElementTimeoutId=setTimeout("getDataElement()",2000); } /* * demande de recuperation des alamres */ function getDataElement() { //Creation de l'instance de XMLhttpRequest en fonction du navigateur if (window.XMLHttpRequest) // Objet de la fen?tre courant { requestDataElement = new XMLHttpRequest(); // Firefox, Safari, ... // requestImage.overrideMimeType('text/xml'); } else if (window.ActiveXObject) // Version Active { requestDataElement = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer } //Preparation et envoie de la requete requestDataElement.onreadystatechange=xmlHttpHandler_processXML; requestDataElement.open("GET", "searchControlResult.do", true); requestDataElement.setRequestHeader("Cache-Control","no-store"); //Pour ne pas mettre en cache le resultat, sinon apres, il refait jamais de requetes... requestDataElement.setRequestHeader("Pragma","no-cache"); requestDataElement.send(null); //(a enlever) //Attente de la nouvelle mise a jour getDataElementTimeoutId=setTimeout("getDataElement()",refreshDataElement); } /* * fonction appelee a chaque changement d'etat de la requete */ function xmlHttpHandler_processXML() { if (requestDataElement.readyState==4) //etat = 4 sigifie que la reponse est arrivee { if (requestDataElement.status == 200 ) //reponse correct { dataElement=requestDataElement.responseText; replaceDataElement(); } else { alert("FICHIER MAL RECU : \n voila le contenu : \n"+ requestDataElement.responseText); } } } /* * remplace les anciennes valeurs par les nouvelles */ function replaceDataElement() { emplacementDataElement=window.document.getElementById("divUpdateResultSearch"); emplacementDataElement.innerHTML = dataElement; }
La partie en gras dans la jsp incluse dans le div que je rafraichis ne se met pas à jour sur la page :
Je devrais avoir normalement des boutons (par l'utilisation de la stylesheet) avec marqué dessus les trucs que je récupère en java.
Or avec des tests en mettant des system.out.println() dans mon codes java qui se trouve dans ma jsp, je vois bien que normalement il devrait y avoir des commandes affichées ce qui n'est pas le cas....
A tout hasard, voici le code de la css qui correspond à la partie des boutons :
Quelqu'un a une idée?
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 /*Classe pour les boutons des commandes*/ .commande{ background:#ffffff url(buttonCommand.png) repeat-x bottom left; padding:5px 5px 5px 5px; border:none; height: 55px; width:260px; } /*Classe pour le texte des bouton*/ .commandetexte{ font-family: Verdana, Arial, Helvetica, Geneva, sans-serif; font-style:bold; color: #660099; font-size: 12pt ; margin-left : 5px; margin-right : 5px; margin-bottom : 5px; }
Partager