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

Taglibs Java Discussion :

Lire une ArrayList dans une JSP en utilisant ForEach


Sujet :

Taglibs Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 27
    Points
    27
    Par défaut Lire une ArrayList dans une JSP en utilisant ForEach
    Bonjour,
    J'aimerais lire une ArrayList dans une JSP grâce à la JSTL.

    Tout commence depuis ma servlet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     
    		request.setAttribute("ListName", Name.getAllName());
    		request.getRequestDispatcher("Name_JSP.jsp").forward(request, response);
     
    	}
    puis j'inclus le fichier c.tld dans ma JSP:

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>
    puis la boucle foreach:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:forEach var="name"  items="${requestScope['ListName']}" >
              <option value="${ListName.nom}"> ${ListName.nom} </option>
    </c:forEach>
    Mais quand j'exécute j'obtiens une erreur pointant sur le request.getRequestDispatcher(), je pense que c'est dû à l'import du c.tld pourtant le fichier y est

    HELP ME PLS

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    c'est 'name' et pas 'ListName' dans ta boucle qu'il faut référencer. Ensuite, poste nous le message d'erreur complet.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:forEach var="name"  items="${requestScope['ListName']}" >
              <option value="${name.nom}"> ${name.nom} </option>
    </c:forEach>
    sa m'affiche ${name.nom}
    pourtant sa marche bien avec des boucles <% for %>

  4. #4
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Les EL ne sont pas interprétées.
    Cela signifie donc que ton application n'est pas définie en J2EE 1.4.
    Dans ce cas, il faut utiliser le tag <c:out>.

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <c:forEach var="name"  items="${requestScope['ListName']}" >
       <option value="<c:out value='${name.nom}'/>"><c:out value="${name.nom}"/></option>
    </c:forEach>

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 27
    Points
    27
    Par défaut
    merci pour ta réponse, mais lorsque je lance la boucle sa me fait 1 seule itération alors qu'en réalité ils sont 3, j'arrive pas a parcourir mon ArrayList

  6. #6
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Je suppose qu'il t'affiche seulement le dernier record non ?
    si c'est bien le cas, c'est la constitution de l'ArrayList qui est incorrecte.
    Crées-tu bien une nouvelle instance d'objet à chaque itération ?
    Peux-tu poster le code qui constitue l'ArrayList ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 28
    Points : 27
    Points
    27
    Par défaut
    je refais mon code avec la version 1.4 avec quelque modif, voila mon code:

    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
    //class Name
    public static ArrayList<Name> getAllName(){
     
    		ArrayList<Name> AllName = new ArrayList<Name>();
    		ResultSet result;
     
    		if((result = Connec.GetAll("name"))==null) return null;
    //Sa me permet d'avoir un resultSet avec tous le contenu de la table name(code_nom,lib_nom)
    		else { 
    			try {
     
    				while(result.next()){
     
    					Name nom = new Name(result.getInt(1),result.getString(2));
    					AllName.add(nom);
    				}	
    			} catch (SQLException e) {		
    			}
    		}
     
    		return AllName;	
    	}
    et puis ma servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("ListName", Name.getAllName());
    et enfin mon foreach:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		<c:forEach var="nom"  items="${requestScope['ListName']}">
     
    		          <c:out value="${nom.lib_nom}"/>
    		</c:forEach>
    mon erreur est la suivante:

    Unable to find a value for "lib_nom" in object of class "Name" using operator "."

  8. #8
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Peux-tu poster le code de la classe Name ?

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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