bonjour à tous,
je patauge un peu dans la notion d'affichage dynamique dans une jsp (concernant une application web).
Dans ma page jsp j'ai une liste déroulante de dates (listAllDates), fournie par une Servlet, et en fonction de la date sur laquelle l'utilisateur clique, je dois faire afficher un tableau de données dans cette même page jsp, sans bouton submit et sans rafraichir la page. Ces données proviennent elles aussi de ma Servlet, et correspondent aux elements d'une autre arraylist (listRunHome).
J'ai donc pour cela un javascript que j'ai nommé scriptLoadTable :
Je ne suis pas sûre qu'il soit bon...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /** * javascript to fill the table */ function LoadTable () { var listRunHome = document.getElementByName("selectedDate").value; var loc; loc = 'listRunHome='+listRunHome; window.location = './home.jsp?'+loc; }
le code de ma servlet :
là où ça bloque, c'est notamment comment appeler mon javascript dans la jsp:
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 public class SHome extends HttpServlet { // class variables : private static final long serialVersionUID = 1L; static Connection cnx; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost (request, response);} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(true); //timeout de 15 minutes pour cette session : session.setMaxInactiveInterval(15*60); // = 15 * 60 sec ... la connexion est ok... DaoRun runDao = new DaoRun(cnx); // liste des dates dans la liste deroulante de la jsp : ArrayList<String> listAllDates = new ArrayList<String>(); listAllDates = runDao.findAllRunDates(); System.out.println("SHome : taille de listAllDates : "+listAllDates.size()); //petite verif session.setAttribute("listAllDates", listAllDates); // recuperer la date choisie par l'utilisateur: String dateSelected = request.getParameter("selectedDate"); System.out.println("SHome : dateSelected : "+dateSelected); // puis afficher alors le tableau de resultat = info sur les runs ayant eu lieu a cette date : if ( request.getParameter("selectedDate") != null ) { System.out.println("SHome dateSelected n'est pas null"); ArrayList<BRun> listRunHome = new ArrayList<BRun>(); listRunHome = runDao.getInfo(request.getParameter("dateSelected")); System.out.println("SHome : listRunHome : "+listRunHome); session.setAttribute("listRunHome", listRunHome); } else { System.out.println("SHome dateSelected est null"); } //enfin j'envoie vers la jsp: RequestDispatcher disp = request.getRequestDispatcher("/home.jsp"); disp.forward(request, response); }
Je bloque dessus depuis vendredi, et ça devient cafouilleux dans ma cervelle...
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 <!-- pour afficher les elements de arrayList listRunDate :--> <table style="border: 1px, solid, separate; font-size: 8pt;"> <tr> <td id="idTableDetailHeaderHome">DATE</td> <td><FORM name="selectedDate" method="post" action="SHome"> <!-- pas bon :--> <script src="scriptLoadTable.js" type="text/javascript"></script> <SELECT id="listAllDates" name="selectedDate" size="1" onChange="LoadTable()"> <!-- NB : le name est ce qui sera recupere cote servlet avec request getParameter --> <c:if test="${not empty sessionScope['listAllDates'] }"> <option value="" selected="selected" >Select</option> <c:forEach var="date" items="${sessionScope['listAllDates']}"> <option value="${date}" ><c:out value="${date}"/></option><br /> </c:forEach> </c:if > </SELECT> </FORM> </td> </tr> </table> <!-- et pour remplir le tableau: --> <c:if test="${not empty sessionScope.dateSelected}"--> <table> <c:forEach var="run" items="${sessionScope.['listRunHome']}"> <tr> <td><c:out value="${run.clientName}"/></td> <td><c:out value="${run.matricule}"/></td> <td><c:out value="${run.status}"/></td> </tr> </c:forEach> </table> </c:if>
Un coup de main serait bienvenue !
Merci et bonne journée![]()
Partager