Bonjour,
j'ai un soucis d'affichage des données issues d'une HashMap dans une JSP.
Problématique initiale : afficher dans un tableau la liste des paramètres se trouvant dans l'URL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Liste des paramètres Clé Valeur p 2 v 8 Clé Valeur p 2 v 8
Je pensais pour cela utiliser un objet implicite contenant ces paramètres, normalement une Map, mais je n'y suis pas arrivé.
J'ai donc demandé au controleur de faire passer à la JSP une HashMap que j'ai construite moi-même en y mettant les paramètres de la requête.
Maintenant que cette Map est transmise à la JSP, je fais une boucle pour afficher son contenu dans un tableau, mais tout est doublé. Il semblerait que la boucle tourne autant de fois qu'il y a d'entrées dans la Map alors que je souhaiterais en toute logique qu'elle tourne autant de fois qu'il y a un couple clé/valeur.
Affichage 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 <table> <tr> <th>Clé</th> <th>Valeur</th> </tr> <c:forEach items="${Params}" var="entry"> <tr> <td>${entry.key}</td> <td>${entry.value}<br></td> </tr> </c:forEach> </table>
Construction de la Map par le controleur
Savez-vous me dire ce que je dois changer à ma boucle <c:forEach... afin que j'ai autant de lignes que de couples clé/valeur ?
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 /** * @requestParams HashMap stockant les paramètres de la requête */ HashMap<String,String> requestParams = new HashMap<String,String>(); //params de la requête HashMap<String,String> paramsOut = new HashMap<String,String>(); //params à renvoyer à la JSP requestParams = (HashMap) request.getParameterMap(); Iterator<Map.Entry<String,String>> it = requestParams.entrySet().iterator(); Iterator<Map.Entry<String,String>> itOut = paramsOut.entrySet().iterator(); while(it.hasNext()) { Map.Entry couples = (Map.Entry)it.next(); paramsOut.put((String) couples.getKey(), request.getParameter((String)couples.getKey())); } request.setAttribute("Params", paramsOut); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(ma_page); dispatcher.forward(request,response);
Accessoirement, comment dois-je invoquer l'obket implicite "param" pour obtenir le même résultat sans passer par le controleur pour faire le job ?
Merci d'avance.
Partager