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 :

Coder une ListBox


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut Coder une ListBox
    bonsoir
    je cherche a coder une listebox dans un page jsp, la listebox se remplit suite a une requette SQL.

    l'objet listbox appartiens a quel class et les methodes ..?

    faut t'il invoquer la listebox depuis une page JSP ou Servlet ???

  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
    Tu peux mettre le résultat de la requête dans une collection de type ArrayList par exemple, puis la mettre dans le scope request pour la rendre accessible depuis la jsp et ensuite, dans la jsp, tu utilises les tags select et option.

    Si par exemple la liste est une ArrayList de String, dans la jsp, tu peux l'afficher comme ceci :
    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
    <jsp:useBean id="uneListe" scope="request" type="java.util.ArrayList"/>
     
    <form method="POST" action="<%=request.getContextPath()+"/pathDeLaServlet"%>">
     
    <select name="itemSelected">
    <%
            for (int i=0; i<uneListe.size(); i++)
            {
                    String item= (String) uneListe.get(i) ;
    %>
    	   <option value="<%=item%>"><%=item%></option>
    <%
            }
    %>
    </select>
    </form>
    et pour récupérer l'élément sélecté dans la servlet exécutée au submit du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String itemSelected = request.getParameter("itemSelected") ;
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    bonjour,

    merci pour le code, mais je doit remplir ma listebox via une requete SQL,
    je me demande commen faire, et sur tout je pence qu'il faut coder le remplissage de la listebox dans une servlet plutot que dans une jsp,
    ca me semble plus securiser, je me trompe??


    CDLT
    Philo

  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
    Le code mis dans la jsp est celui qui permet d'afficher le contenu de la liste sous forme de liste déroulante mais la constitution de la liste à partir du résultat d'une requête SQL, doit se faire dans une méthode d'une classe.
    Tu fais appel à cette méthode dans la servlet et tu mets la liste dans le scope request pour pouvoir y accèder via la jsp.

    Pour constituer une liste à partir du résultat d'une requête SQL, tu peux faire quelque chose du style :
    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 uneListe = new ArrayList();
    try
    {
       Connection connection = // ici, mettre le code permettant de récupérer la connexion
       Statement stmt = connection.createStatement();
       ResultSet rs = stmt.executeQuery("select nomDuChamp from nomTable");
       while (rs.next())
       {
    	uneListe.add(rs.getString("nomDuChamp"));
       }
       rs.close();
       stmt.close();
    }
    catch (SQLException e)
    {
       // code de gestion de l'erreur
    }
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    bonjour,

    suite a votre code :
    ArrayList uneListe = new ArrayList();

    comment je declare la class ArrayList ??


    Philo

  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
    ArrayList est une classe du package java.util.

    Il suffit donc de faire un import de cette classe au début de la servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import java.util.ArrayList ;
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    Merci,
    j'ai du mal a declarer la class de remplissage??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    	public ListePersonne listboxfilms () 	// je sais pas	{
    		
    		ArrayList listboxfilms = new ArrayList();
    ;

  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
    Ta méthode devrait plutôt renvoyer un objet de type ArrayList.
    Pourquoi ne pas t'inspirer du code que je t'ai mis précédemment ?
    As-tu déjà écrit le code permettant de te connecter à la base ?
    Est-ce que cela fonctionne ?
    Quels propriétés de ta table veux-tu utiliser pour l'affichage de la liste déroulante ?
    Si tu veux de l'aide, il faut en dire un peu plus sur ce que tu as déjà fait et ce que tu souhaites afficher.
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    oui en faite j'ai ecrit plusieurs modules qui accede a une base Mysql
    avec un connecteur JDBC, cela marche tres bien mais sur mon dernier
    module je doit coder 2 listebox , pour le choix des articles ,
    et la je me pose des questions ,

    voici la class que j'ai ecrit grace a ton aide,


    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
     
     
    	public ListePersonne listboxfilms ()
    	// gestion de la listebox films
    	{
     
    		ArrayList listboxfilms = new ArrayList();
    ;
    		try
    		{
    			//listboxfilms listbox = new listboxfilms();
     
    		   Statement st = cnx.createStatement();
    		   ResultSet rs = st.executeQuery("select nom from films");
    		   while (rs.next())
    		   {
    			listboxfilms.add(rs.getString("nom"));
    		   }
    		   rs.close();
    		   st.close();
    		}
    		catch (SQLException e)
    			{
    				displayException(e);
    			}
    	}

    En faite je n'arrive pas a declarer a nommer ma class -- Public .....

    philo

  10. #10
    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
    Ta méthode doit renvoyer un objet de type ArrayList.
    Il faut donc plutôt coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	public ArrayList listboxfilms ()
    Et ensuite, dans ta servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NomDeTaClasse nomInstanceClasse=new NomDeTaClasse() ;
    ArrayList listboxFilms = nomInstanceClasse.listboxfilms() ;
    request.setAttribute("listboxFilms",listboxFilms) ;
    en remplaçant NomDeTaClasse par le nom de la classe dans laquelle tu as codé la méthode listboxfilms.
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    je ne comprens pas cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Code :
    NomDeTaClasse nomInstanceClasse=new NomDeTaClasse() ;
    ArrayList listboxFilms = nomInstanceClasse.listboxfilms() ;
    request.setAttribute("listboxFilms",listboxFilms) ;
    car monInstanceClasse c'est listeboxfilms car ca veux dire qu'on invoque
    le constructeur lui meme !!!

    Philo

  12. #12
    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 pense que tu devrais suivre un bon tutoriel Java.

    Enfin, listeboxfilms est une méthode d'une classe.
    Pour faire appel à cette méthode, tu es obligé de créer une instance de la classe, à moins de la déclarer comme static.

    Tu dois donc avoir une classe, que moi j'ai appelé NomDeTaClasse parce que je ne sais pas comment tu l'as nommé, dans laquelle tu as codé la méthode listboxfilms :
    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
    public class NomDeTaClasse
    {
       	public ArrayList listboxfilms ()
    	// gestion de la listebox films
    	{
     
    		ArrayList listboxfilms = new ArrayList();
     
    		try
    		{
    			//listboxfilms listbox = new listboxfilms();
     
    		   Statement st = cnx.createStatement();
    		   ResultSet rs = st.executeQuery("select nom from films");
    		   while (rs.next())
    		   {
    			listboxfilms.add(rs.getString("nom"));
    		   }
    		   rs.close();
    		   st.close();
    		}
    		catch (SQLException e)
    			{
    				displayException(e);
    			}
    	return listboxfilms ;	 
    	}	 
    }
    et dans la servlet, pour faire appel à la méthode listboxfilms :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    NomDeTaClasse nomInstanceClasse=new NomDeTaClasse() ;
    ArrayList listboxFilms = nomInstanceClasse.listboxfilms() ;
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    35
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    merci c_nvy pour tout ce détail

Discussions similaires

  1. coder une listbox
    Par cortex59 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 20/05/2008, 14h55
  2. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16
  3. Réponses: 3
    Dernier message: 25/03/2004, 11h35
  4. [debutant][servlet]erreur causée par une listBox
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/03/2004, 10h53
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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