IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Impossible de lire une HashMap dans JSP


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 89
    Points : 60
    Points
    60
    Par défaut Impossible de lire une HashMap dans JSP
    Bonjour,

    Je suis confronté à un problème, j'essaye d'affiché ce que j'ai dans un hashmap mais impossible.
    J'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ne erreur s'est produite à la ligne: 23 dans le fichier jsp: /WEB-INF/content/showDetailsGroupAbs.jsp
    The type of the expression must be an array type but it resolved to Object
    20:  Iterator<String> it = listAbs.keySet().iterator();
    21: while(it.hasNext()){ 
    22:         String sKey = it.next();
    23:         String sProduct = listAbs.get(sKey)[0];
    24:         String sPrice = listAbs.get(sKey)[1];
    25:         String heure = listAbs.get(sKey)[2]; %>
    26:        <%= "ID : "+sKey+", Nom : "+sProduct+", Prenom : "+sPrice+", heure : "+heure%>
    J'ai bien compris que mon erreur se situe au niveau des ligne 23 à 25, mais la j’avoue que je sèche parce que quand je test au niveau de mon controleur cela fonctionne nickel.

    Voici le code controleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int grpId =Integer.parseInt(request.getParameter("id"));			
    			Groupe grp = GroupeDAO.retrieveById(grpId);
     
    			Map<String,String[]> e = EtudiantDAO.getAllByGrpAbs(grp);
    			 Iterator<String> it = e.keySet().iterator();
    			 while(it.hasNext()){ 
    			         String sKey = it.next();
    			         String sProduct = e.get(sKey)[0];
    			         String sPrice = e.get(sKey)[1];
    			         String heure = e.get(sKey)[2]; 
    			        System.out.println("ID : "+sKey+", Nom : "+sProduct+", Prenom : "+sPrice+", heure : "+heure);
    			 }
    			request.setAttribute("listAbs",e );
    Code au niveau 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
     
    <%@ page import="java.util.*"%>
    		<%@ page import="java.util.Iterator"%>
    		<%@ page import="fr.noteEtudiant.Bdd.*"%>
    <jsp:useBean id="listAbs" class="java.util.HashMap" scope="request"/>
     
    <%
    Iterator<String> it = listAbs.keySet().iterator();
    while(it.hasNext()){ 
            String sKey = it.next();
            String sProduct = listAbs.get(sKey)[0];
            String sPrice = listAbs.get(sKey)[1];
            String heure = listAbs.get(sKey)[2]; %>
           <%= "ID : "+sKey+", Nom : "+sProduct+", Prenom : "+sPrice+", heure : "+heure%>
    <%} %>
    Avez-vous une idée, pouvez vous m'aider ?

    Merci par avance...

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 10
    Points : 20
    Points
    20
    Par défaut Réponse
    Utilise plutôt la jstl (principes ne pas avoir de code java dans les vues plus pratique et moins encombrant):

    - faut d'abord ajouter les jars nécessaire pour utiliser jstl (si ils y sont pas déjà)
    - un import de la tag lib au niveau de la jsp (<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>)

    puis :

    <c:forEach var="listAbsvar" items="${listAbs}">
    La clef est : ${listAbsvar.key}
    La valeur est : ${listAbsvar.value}
    </c:forEach>

  3. #3
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    la JSTL serait effectivement bien plus pratique à manier.

    Ceci dit pour ton erreur, elle doit venir du fait que le <useBean> ne gère pas les Generics: ta HashMap n'est pas typée, et donc pour lui:
    listAbs.get(sKey)

    ne renvoi pas un "String[]" mais un "Object". Donc, la syntaxe listAbs.get(sKey)[0] fait hurler le compilateur JSP.
    Si tu tiens à rester sur des scriptlets, tu va devoir caster ta HashMap:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while(it.hasNext()){ 
    String sKey = it.next();
    String[] monTableau = (String[]) listAbs.get(sKey); // Tu force le compilateur a caster l'Object en String[]
    String sProduct = monTableau [0];
    String sPrice = monTableau [1];
    String heure = monTableau [2];%>
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

Discussions similaires

  1. Impossible de lire une cellule dans un fichier fermé
    Par Mic13710 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/06/2015, 22h57
  2. [JSTL] Lire une ArrayList dans une JSP en utilisant ForEach
    Par ScReeeN dans le forum Taglibs
    Réponses: 7
    Dernier message: 23/07/2010, 11h46
  3. Réponses: 5
    Dernier message: 22/06/2010, 09h53
  4. Affichage d'une hashmap dans une jsp
    Par fk04 dans le forum Struts 1
    Réponses: 8
    Dernier message: 07/10/2007, 19h28
  5. [JSP/javascript] lire une variable dans un infobulle
    Par maniolo dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 20/10/2006, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo