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 :

[JSP] meilleur moyen d'afficher un ArrayList ?


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut [JSP] meilleur moyen d'afficher un ArrayList ?
    bonjour,
    je cherche le meilleur moyen d afficher un Arraylist situé dans un bean sous forme de tableau dans la page jsp
    j ai penser a quelque chose comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <jsp:useBean id="usrBean" class="testco.UserBean" scope="request"/>
    <body>
    ...
    <c:forEach var="tableusr" items="${usrBean.listuser}" >
    </c:forEach>
    mais ca a pas l air de fonctionner...
    erreur:
    javax.servlet.jsp.el.ELException: Unable to find a value for "listuser" in object of class "testco.UserBean" using operator "."
    est il possible selon cette maniere a d arriver a afficher mon ArrayList ?
    il vos peut etre mieu utiliser des Struts ?

  2. #2
    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
    Tout d'abord, pour être sûr que cela fonctionne bien, je te conseille de respecter les conventions de nommage java, soit une majuscule à chaque nouveau mot dans les noms des attributs.
    Donc, ton ArrayList, appelle-la plutôt listUser.

    Sinon, pour que ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:forEach var="tableusr" items="${usrBean.listUser}" >
    il faut que usrBean soit dans le scope, et que ta classe UserBean possède un attribut listUser de type ArrayList avec les méthodes getListUser() et setListUser().
    Est-ce le cas ?
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    je voit pas trop ce que c'est le scope
    ce serai pas ca dans ma servlet?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("usrBean",userBean);                     getServletContext().getRequestDispatcher("/administrateur.jsp").forward(request,response);
    et oui j ai bien l attribu listUser de type ArrayList dans le bean ainsi que les 2 methode get et setListUser()

  4. #4
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    le scope c'est l'"etendue" : et ce que tu as acces à ta variable dans ta session ?, dans ta page ? dans ta requete ?

  5. #5
    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
    Quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("usrBean",userBean);
    ceci signifie que tu mets userBean dans le scope request sous le nom usrBean.

    Dans ta jsp, enlève cette ligne-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <jsp:useBean id="usrBean" class="testco.UserBean" scope="request"/>
    Est-ce que ça marche mieux ?
    Modératrice Java - Struts, Servlets/JSP, ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    non toujours meme erreur

  7. #7
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    met nous le code de ta servlet

    est ce que tu fait instancie bien ton bean UserBean ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    voici le bout de code de ma servlet
    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
     
    ArrayList listeUser = new ArrayList() ;
                                      while ( rs.next() )
                                      {
                                          String nom = rs.getString("Nom") ;
                                          String passw = rs.getString("Password");
                                          String fonction = rs.getString("Fonction");
                                          UserBean userBean = new UserBean() ;
                                          userBean.setNom(nom);
                                          userBean.setPassword(passw);
                                          userBean.setFonction(fonction);
                                          listeUser.add(userBean) ;
                                      }
                                 UserBean userBean = new UserBean() ;
                                 userBean.setListUser(listeUser);
                                 request.setAttribute("usrBean",userBean);
                                 getServletContext().getRequestDispatcher("/administrateur.jsp").forward(request,response);
    mon bean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private ArrayList listuser;
    private ArrayList listcamion;
     
     
    public void setListUser(ArrayList listuser)
       {
       this.listuser = listuser;
       }
     
    public ArrayList getListUser()
        {
        return listuser;
        }
    ma 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
     
    <%@ page contentType="text/html"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <jsp:useBean id="usrBean" class="testco.UserBean" scope="request"/>
     
    <html>
    <head>
    <title>
    administrateur
    </title>
    </head>
    <body style="background-color: rgb(0, 204, 255);">
    <c:forEach var="tableusr" items="${usrBean.listuser}" >
    </c:forEach>

  9. #9
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    dans ce cas là je te conseille de mettre dans ta servlet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("listeUser",listeUser);

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 58
    Points : 55
    Points
    55
    Par défaut
    salut,

    j'ai eu un peu le meme probleme, y'a des histoires de versions...,

    peut-etre essaie de changer, ça avait resolu mon probleme (par contre j'affiche avec <c:out value="..." />) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    plus d'infos :

    http://adiguba.developpez.com/tutoriels/j2ee/jsp/jstl/

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    Je suis avec la jstl 1.1 donc mon uri doit bien etre http://java.sun.com/jsp/jstl/core

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    j ai toujour la meme erreur
    javax.servlet.jsp.el.ELException: Unable to find a value for "listuser" in object of class "testco.UserBean" using operator "."
    en utilisant un <c:out value="..." />)

  13. #13
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    tu as changé le setAttribute comme je te l'a dis ...?

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    oui et ca fait la meme chose

  15. #15
    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
    Tu as implémenté les méthodes getListUser et setListUser dans ton bean.
    Ton attribut doit donc être listUser avec un "U" majuscule et non listuser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private ArrayList listUser; 
    public void setListUser(ArrayList listUser) 
       { 
       this.listUser = listUser; 
       } 
    public ArrayList getListUser() 
        { 
        return listUser; 
        }
    et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:forEach var="tableusr" items="${usrBean.listUser}" >
    Par contre, il y a quelque chose qui ne va pas.
    Tu as constitué une ArrayList de beans UserBean et tu mets cette ArrayList dans le même bean UserBean.
    Tu devrais créer un autre Bean, par exemple Users, avec pour attribut ton ArrayList et les méthodes get et set correspondantes.
    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
     
    ArrayList listeUser = new ArrayList() ; 
    while ( rs.next() ) 
            { 
               String nom = rs.getString("Nom") ; 
               String passw = rs.getString("Password"); 
               String fonction = rs.getString("Fonction"); 
               UserBean userBean = new UserBean() ; 
               userBean.setNom(nom); 
               userBean.setPassword(passw); 
               userBean.setFonction(fonction); 
               listeUser.add(userBean) ; 
             } 
    Users users = new Users() ; 
    users.setListUser(listeUser); 
    request.setAttribute("users",users); 
    getServletContext().getRequestDispatcher("/administrateur.jsp").forward(request,response);
    et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:forEach var="tableusr" items="${users.listUser}" >
    L'autre solution est de mettre directement l'ArrayList dans le scope sans passer par un bean, comme je te l'avais proposé dans un précédent post et comme te le propose isma4.
    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
     
    ArrayList listeUser = new ArrayList() ; 
    while ( rs.next() ) 
            { 
               String nom = rs.getString("Nom") ; 
               String passw = rs.getString("Password"); 
               String fonction = rs.getString("Fonction"); 
               UserBean userBean = new UserBean() ; 
               userBean.setNom(nom); 
               userBean.setPassword(passw); 
               userBean.setFonction(fonction); 
               listeUser.add(userBean) ; 
             } 
    request.setAttribute("listeUser",listeUser); 
    getServletContext().getRequestDispatcher("/administrateur.jsp").forward(request,response);
    et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <c:forEach var="tableusr" items="${listeUser}" >
    PS : Un conseil, essaie d'homogénéiser tes noms d'attributs pour ne pas t'y perdre.
    Donne le même nom partout à ton ArrayList donc soit listeUser soit listUser.
    Modératrice Java - Struts, Servlets/JSP, ...

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 40
    Points
    40
    Par défaut
    c'est bon j ai reussie
    jai mis dans ma servlet
    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
     
     ArrayList listUser = new ArrayList() ;
     
                                 while ( rs.next() )
                                      {
                                          UserBean userBean = new UserBean() ;
                                          String nom = rs.getString("Nom") ;
                                          String passw = rs.getString("Password");
                                          String fonction = rs.getString("Fonction");
     
                                          userBean.setNom(nom);
                                          userBean.setPassword(passw);
                                          userBean.setFonction(fonction);
                                          listUser.add(userBean) ;
                                      }
     
                                    request.setAttribute("listuser",listUser);
                                    getServletContext().getRequestDispatcher("/administrateur.jsp").forward(request,response);
    dans le bean
    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
     
    private String nom;
    private String password;
    private String fonction;
     
    public void setNom(String nom)
        {
        this.nom = nom;
        }
     
    public void setPassword(String password)
        {
        this.password = password;
        }
     
    public void setFonction(String fonction)
        {
        this.fonction = fonction;
        }
     
    public String getNom()
        {
        return nom;
        }
     
    public String getPassword()
        {
        return password;
        }
     
    public String getFonction()
        {
        return fonction;
        }
    et dans ma 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
     
    <%@ page language="java"%>
    <%@taglib prefix="bean"  uri="/WEB-INF/struts-bean.tld"  %>
    <%@taglib prefix="html"  uri="/WEB-INF/struts-html.tld"  %>
    <%@taglib prefix="logic" uri="/WEB-INF/struts-logic.tld" %>
     
     
     
     
    <html>
    <head>
    <title>
    administrateur
    </title>
    </head>
     
    <body style="background-color: rgb(0, 204, 255);">
    <br>
     
     
    <jsp:useBean id="listUser"  scope="request" class="testco.UserBean" type="testco.UserBean"/>
     
    <logic:iterate id="idListUser" name="listuser" scope="request">
      <bean:write name="idListUser" property="nom"/>     <bean:write name="idListUser" property="password"/>
      <br>
    </logic:iterate>
    je vous remercie bcoup pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher contenu Arraylist dans jsp
    Par maximeratus dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 15/11/2010, 22h50
  2. [C++.NET][DX9] pas moyen d'afficher un triangle
    Par NicolasG dans le forum DirectX
    Réponses: 13
    Dernier message: 02/01/2006, 15h55
  3. Quel est le meilleur moyen d'utiliser uns base MySQL
    Par netah25 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/12/2005, 08h46
  4. Quels sont les meilleurs moyens Marketing pour faire connaitre un site ?
    Par patrick_lassaly dans le forum Webmarketing
    Réponses: 23
    Dernier message: 24/11/2005, 11h28
  5. [MySQL] Quel est le meilleur moyen de stocker une date/heure ?
    Par MiJack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2004, 12h19

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