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 :

remplir une <select> avec une liste


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut remplir une <select> avec une liste
    Bonjour,
    je suis nouveau sur JSP et j'ai bien sûr commencé par suivre des tutoriels, mais forcément je ne peux pas avoir tout assimilé d'un coup...

    bref, j'ai une liste déroulante, que je remplis "à la main", du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <select id="selectiontruc"
     		name="selecttruc" size="1" >
      <option value="">Sélectionnez un truc</option>
      <option value="t1">Truc 1</option>
      <option value="t2">Truc2</option>
    </select>
    J'aimerais beaucoup remplir cette liste à l'aide d'une classe java, mais je n'y arrive pas... J'ai notamment essayé ce que j'ai trouvé à ces adresses:

    http://www.developpez.net/forums/sho...ghlight=select
    et
    http://www.developpez.net/forums/sho...ghlight=select

    ça m'a l'air clairement expliqué, mais je ne sais pas pourquoi cela ne fonctionne pas chez moi.

    Dans le premier cas, il est précisé : "Ceci suppose que l'objet uneListe est une ArrayList de String mise dans le scope request" mais j'avoue que je ne vois pas vraiment ce qu'il veut dire par là, en pratique...

    Et dans le deuxième cas, la méthode "request" n'est pas reconnue dans la classe java, et eclipse ne me propose pas d'import pour qu'elle soit reconnue...

    enfin bref, j'en ai essayé d'autres mais je ne trouve rien de convaicant...
    si quelqu'un avait une explication à me donner, j'en serais ravi :-)

    cordialement,
    sassien

  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
    La classe Java, tu veux l'appeler dans la jsp ou dans une servlet ?
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Salut c_nvy,

    Eh bien pour le moment je n'ai pas mis de servlet, donc je vais répondre la 1, jsp :-D

    en fait j'ai fait du jsf avant de faire du jsp (c'est peut etre pas optimal comme ordre mais bon...)

    et en jsf on a un bean, qui peut contenir une liste d'objets. et dans la page jsp correspondante il suffit de référencer le nom du bean en question, et celui de la liste, et boum, on a la liste déroulante...

  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
    Je suppose donc que dans ta classe Java, tu as écrit une méthode qui renvoie une liste de String ou une liste d'objets.
    Il suffit donc de faire appel à cette méthode dans la jsp et ensuite itérer sur la liste comme indiqué dans les discussions que tu as cité.

    Si tu ne t'en sors pas, montre le code de la classe Java et précise ce que tu veux afficher comme value et libelle dans la liste déroulante.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Bon, je sais que ce n'est pas forcément propre, mais ça je m'en soucierai quand ça marchera :-)

    Dans ma classe java:

    Code java : 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
     
    public class AccueilRequeteMgr {
     
    	private List<Societe> mListeSocietes = new ArrayList();
     
    	public void executer() throws Exception {
     
    		Societe lSociete = new Societe();
    		lSociete.setMCodeSociete("societe1");
    		lSociete.setMLibelleSociete("Société 1");
    		mListeSocietes.add(lSociete);
    		lSociete.setMCodeSociete("societe2");
    		lSociete.setMLibelleSociete("Société 2");
    		mListeSocietes.add(lSociete);
     
    		//request.setAttribute("LISTE_SOCIETES", mListeSocietes);
    	}
     
    	public List<Societe> getMListeSocietes() {
    		return mListeSocietes; }
     
    	public void setMListeSocietes(List<Societe> listeSocietes) {
    		mListeSocietes = listeSocietes; }
    }

    et 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
    14
    15
    16
    17
    18
     
    <jsp:useBean id="AccueilBean" scope="request" type="com.application.managers.AccueilRequeteMgr" />
    <%
    java.util.ArrayList<String> ListeSocietes = (java.util.ArrayList) request.getAttribute("LISTE_SOCIETES");
    %>
     
    <select id="selectSocieteDyn"
     		name="LISTE_SOCIETES" size="1" >
    <%
            for (int i=0; i<ListeSocietes.size(); i++)
            {
                    String item = (String) ListeSocietes.get(i) ;
    %>
    	   <option value="<%=item%>"><%=item%></option>
    <%
            }
    %>
    </select>
    En fait, à partir du moment où je mets un <jsp:usebean>, ça plante. (la page n'affiche rien) même si je ne mets pas la suite. Je n'ai pas trouvé beaucoup d'infos dans le fichier de log à ce niveau là...
    Je me doute bien qu'aux yeux d'une personne habituée aux jsp, il doit y avoir quelque chose de pas net, mais moi je ne vois rien.. :-)

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 53
    Points : 47
    Points
    47
    Par défaut
    bonjour
    je ne sais pas est ce que j'ai bien compris se que tu veut mais,j'ai afficher les résultats d'une classe java dans une liste, le return de ma classe est de type String, et non pas un tableau si tu veut je te donnerai se que j'ai fait.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Salut,

    oui ça m'intéresse toujours, je pourrai regarder et voir si je comprend, pour pouvoir l'adapter à mon application...
    tu peux me l'envoyer stp? par mp ou par mail, n'importe... :-)
    merci :-)

  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
    Vu que tu n'utilises pas de servlet et donc que tu ne mets pas d'objets dans le scope, il ne faut pas coder de tag jsp:useBean, ni de request.getAttribute.

    Par contre, il faut faire appel à ta classe Java dans la jsp.

    Cela devrait donner quelque chose 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
    17
    18
    19
    20
    21
    22
    23
    24
    <%@ page import="java.util.*"%>
    <%@ page import="com.application.managers.AccueilRequeteMgr"%>
    <%@ page import="nomDuPackage.Societe"%>
     
    <% 
       AccueilRequeteMgr accueilRequeteMgr = new AccueilRequeteMgr() ;
       accueilRequeteMgr.executer() ;
       List<Societe> listeSocietes = accueilRequeteMgr.getMListeSocietes() ;
    %>
     
    <form name="monForm" action="">
     
    <select id="selectSocieteDyn" name="LISTE_SOCIETES" size="1" >
    <%
            for (int i=0; i<listeSocietes.size(); i++)
            {
                    Societe societe= (Societe) listeSocietes.get(i) ;
    %>
    	   <option value="<%=societe.getMCodeSociete()%>"><%=societe.getMLibelleSociete()%></option>
    <%
            }
    %>
    </select>
    </form>
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    Membre éclairé Avatar de rberthou
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 612
    Points : 690
    Points
    690
    Par défaut
    J'ai ecris (il y a quelque temps) un petit bean qui réalise cela
    - chargement d'une liste code / libelle a partir de table sql (ordre select parametrable)
    - chargement d'une liste en "dur"
    - construction de la liste des option du "<select>" avec selection de la valeur active
    -...
    Vous trouverez ce code source complet ici
    http://www.berthou.com/fr/2008/02/08...es-de-valeurs/

    Il est à mon avis facilement adaptable et améliorable.
    - Informaticien passionné
    - ( java, c++, cobol, php, asp, ... )
    - http://www.berthou.com/fr/

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Salut,
    et merci pour ta réponse claire :-)

    Je suis sûr que ça devrait fonctionner, mais je pense que j'ai un problème de configuration quelque part:
    si j'ajoute les lignes une par une, en testant à chaque fois, je vois que ça plante dès que j'appelle une méthode:

    ça ça marche:
    AccueilRequeteMgr accueilRequeteMgr;
    mais ça non:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AccueilRequeteMgr accueilRequeteMgr = new AccueilRequeteMgr();
    et ça non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    accueilRequeteMgr.executer();
    si je mets l'une de ces lignes, j'ai une page blanche... tu saurais d'où ça peut venir?
    ces méthodes sont bien sûr définies dans les classes concernées...

    désolé si la solution est toute bête, mais bon là je sens que c'est le dernier obstacle... :-/
    merci encore :-)

  11. #11
    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
    Ajoute un constructeur à ta classe AccueilRequeteMgr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class AccueilRequeteMgr {
     
      public AccueilRequeteMgr()
      {
      }
      ...
    }
    Modératrice Java - Struts, Servlets/JSP, ...

  12. #12
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    C'est aussi ce que je m'étais dit pour le constructeur, je l'avais d'ailleurs rajouté mais non rien n'y fait, c'est pour ça que je ne vois pas ce que ça peut être...

    de toutes facons sinon il me semble que le constructeur par défaut serait appelé.

    bref, si j'appelle une méhode quelle quelle soit ça plante.

    ah non, je peux par exemple appeler le constructeur de String(), qui ne sert pas à grand chose je vous l'accorde, mais c'était un test.

    donc les méthodes crées par moi-même sont celles qui ne peuvent pas être appelées...

    une idée?

  13. #13
    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
    Quelle message d'erreur as-tu ?
    Modératrice Java - Struts, Servlets/JSP, ...

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    ben je n'ai rien trouvé de parlant comme message d'erreur dans la console, à part:

    Erreur d'initialisation du fichier de traces

    Le fichier web.xml de l'application est absent (alors qu'il y est)

    GRAVE: Error filterStart

    GRAVE: Erreur de démarrage du contexte suite aux erreurs précédentes

    et c'est tout... dans le log il n'y a rien d'autre que cette alerte qui n'a, je crois, rien à voir:

    14:54:29 FWK 1 null Nom de source de données inconnu (com.microsoft.sqlserver.jdbc.SQLServerDriver)

    Quand je lance mon appli, les pages s'affichent normalement, sauf celle qui contient le code en question...

  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
    Peux-tu montrer le code complet de la jsp ?
    Modératrice Java - Struts, Servlets/JSP, ...

  16. #16
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    le voici. Je pense que tu vas me dire que les imports sont censés être faits en début de page, mais quand je les y mets mets objets ne sont plus reconnus comme types (AccueilRequeteMgr par exemple)...

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <%@ page 	language="java"
    		contentType="text/html; charset=ISO-8859-1"
    		pageEncoding="ISO-8859-1"%>
     
    <meta http-equiv="Content-Type"
    content="text/html; charset=ISO-8859-1">
    <title>Le Titre</title>
    </head>
     
    <body>
     
    <div id="entete">
    <jsp:include page="Entete.jsp" />
    </div>
     
    <div id="corps" style="width: 580">
    <p>Bla bla bla bla bla<p>
     
    <form METHOD="POST" action='ActionTest2.do'>
     
    <%@ page import="java.util.*"%>
    <%@ page import="com.application.managers.AccueilRequeteMgr"%>
    <%@ page import="com.application.modeles.Societe"%>
     
     
    <% 
       AccueilRequeteMgr accueilRequeteMgr = new AccueilRequeteMgr() ;
       accueilRequeteMgr.executer() ;
       List<Societe> listeSocietes = accueilRequeteMgr.getMListeSocietes() ;
    %>
    <select id="selectSocieteDyn" name="LISTE_SOCIETES" size="1" >
    <%
            for (int i=0; i<2; i++)
            {
                    Societe societe= (Societe) listeSocietes.get(i) ;
    %>
    <option	value="<%=societe.getMCodeSociete()%>"><%=societe.getMLibelleSociete()%></option>
    <%
            }
    %>
    </select>
    </form>
    </div>
    </body>
    </html>

  17. #17
    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
    Que veux-tu dire par "mes objets ne sont plus reconnus comme types" ?

    Sinon, dans l'attribut action du tag form, tu as codé ActionTest2.do.
    Utilises-tu Struts ?
    Modératrice Java - Struts, Servlets/JSP, ...

  18. #18
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Ben si je fais mes imports au début de la page, mon "AccueilRequeteMgr" est souligné en rouge (eclipse) pour me dire "AccueilRequeteMgr cannot be resolved to a type", comme s'il n'avait jamais été importé.

    Sinon, non je n'utilise pas struts, mais un framework spécifique dérivé de websphere 1.0.

  19. #19
    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
    AccueilRequestMgr est-elle bien dans le package com.application.managers ?
    Peux-tu montrer la structure de ton appli ?
    Modératrice Java - Struts, Servlets/JSP, ...

  20. #20
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Oui, AccueilRequeteMgr est dans le bon package, je pense que sinon l'import ne se ferait même pas. (quand je fais l'import juste avant de faire appel aux classes, eclipse ne me donne pas d'erreur)

    Il y a quand même un truc qui cloche je pense: en vue Java, tout va bien, j'ai mes packages, exemple com.application.managers avec des classes.java à l'intérieur, comme AccueilRequeteMgr.

    Mais, en vue J2EE, le .class se retrouve avec le .java, or il me semble que ce n'est pas très normal.

    ça donne:
    com/application/managers/AccueilRequeteMgr.java
    com/application/managers/AccueilRequeteMgr.class
    com/application/managers/SaisieRequeteMgr.java
    com/application/managers/SaisieRequeteMgr.class

    je veux bien les déplacer à la main comme un cochon, mais je ne pense pas que ça va aider à grand chose.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Faire un Select like avec une liste
    Par kassar32 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/12/2011, 13h31
  2. Remplir un champs TEXT caché avec une fonction on change sur une liste déroulante
    Par tang le breton dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/11/2009, 11h04
  3. Remplir 3 champs textes différents avec une liste déroulante
    Par azorol dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2005, 00h04
  4. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23
  5. Réponses: 3
    Dernier message: 21/06/2005, 11h37

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