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 :

Chargement d'une valeur dans un <select>


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut Chargement d'une valeur dans un <select>
    Salut à tous...

    Voilà j'ai un formulaire qui permet de saisir des informations sur une personne en jsp.

    J'utilise un formulaire équivalent pour faire l'update des informations sur une personne.
    Pour réaliser l'update,l'utilisateur saisit l'identifiant de la personne , l'application passe par une servlet pour récupérer les informations et les mettre dans la session puis fais une redirection vars la page update.jsp.

    dans la page update.jsp, je dois charger chaque valeur dans un composant html.
    pour les TextField c'est simple il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="nom" value="<%=session.getAttribute("Nom")%>">
    mais comment faire pour charger la valeur correcte dans un liste déroulante <select> en sachant que je ne souhaite pas utiliser JavaScript.

    Merci ...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Par défaut
    Salut,
    Dans une liste, on met habituellement plusieurs valeurs, supposons qu'on un vecteur (classe Vector) de Personnes, avec Personne une classe avec deux variables id, nom.
    Pour afficher une liste des ces personnes dans ta page sans passer par javascript tu peux écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <SELECT >
    <%   
    for(int i = 0; i < personnes.size(); i++){
    Personne personne = (Personne) personnes.get(i);
    %>
    <OPTION value="<%= personne.getId() %>"> <%= personne.getNom()%> </OPTION> 
    <%}%>
    </SELECT >
    Sachant que le vecteur Personnes peut être récupéré de la session comme ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector personnes = (Vector) session.getAttribute("personnes");
    Voilà.

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Par défaut
    Si ça te convient pas, donne nous l'objets qui contient les données que tu souhaites mettre dans la liste et je te proposerais le code qui va avec.
    Salut.

  4. #4
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Merci ta réponse mais ce n'est pas exactement ce que je veux faire.
    En fait, dans ma page JSP, j'ai une liste de pays qui est statique comme ceci :

    <select name="pays" >
    <option value="France">France</option>
    <option value="Italie">Italie</option>
    <option value="Belgique">Belgique</option>
    ....
    </select>
    Cette liste est statique et n'est pas chargée dynamiquement ni dans la servlet ni dans la jsp.

    Ensuite , j'ai un attribut pays que je récupère avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.getAttribute("pays")
    . Supposons que cet attribut contienne :"Italie", il faut que l'option Italie de liste déroulante soit sélectionnée.

    Avez vous une idée ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 47
    Par défaut
    Si tu ne veux pas passer par le javascript, tu peux ecrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <% String paysSelected = session.getAttribute("pays"); %>
     
    <select name="pays" >
    <option value="France" <% if(paysSelected.equals("France")) out.print("selected") %>>France</option>
    <option value="Italie" <% if(paysSelected.equals("Italie")) out.print("selected") %>>Italie</option>
    <option value="Belgique" <% if(paysSelected.equals("Belgique")) out.print("selected") %>>Belgique</option>
    ....
    </select>
    c'est du bricolage certes, mais si tu ne veux pas passer par javascript et que ta liste n'est pas chargée dynamiquement !! à chaud comme ça je ne vois pas comment faire mieux !

  6. #6
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    C'est à peu près les 2 solutions auxquelles j'avais pensé .

    Je vais me résoudre à prendre la deuxième solution avec les if .

    Si jamais tu as une idée, à froid , n'hésites pas.

    Merci beaucoup pour tes réponses

  7. #7
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    et avec Javascript ça donnerait quoi ??

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Pour simplifier un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <select name="pays" >
    <%
        String paysSelected = session.getAttribute("pays");
        for (String pays : listePays)
        {
            out.println("<option value=\"" + pays.getId() + "\"" + (pays.getId().equals(paysSelected) ? " selected " : "") + ">" + pays.getTexte() + "</option>");
        }
    %>
    </select>
    Avec javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <select name="pays" >
    <%
        for (String pays : listePays)
        {
            out.println("<option value=\"" + pays.getId() + "\">" + pays.getTexte() + "</option>");
        }
        out.println("<script>document.forms[0].pays.value = '" + session.getAttribute("pays") + "'</script>");
    %>
    </select>
    (C'est à peine différent...)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    Merci mais ceci correspond,en javascript, à la 1ère solution donnée MarsOran et qui ne me convient pas car je n'ai pas liste de tous les pays dans la session mais seulement le PAYS à sélectionner .

    Ce que je voudrai c'est un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Ceci n est pas du Javascript correct: 
    document.forms[0].pays.setSelected("<%=session.getAttribute("pays")%>");
    Je sais que ce genre de fonctions n'existe pas mais y aurait il un moyen de faire le meme principe

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ben, je sais bien que session.getAttribute("pays") ne renvoie que le pays sélectionné, mais la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    out.println("<script>document.forms[0].pays.value = '" + session.getAttribute("pays") + "'</script>");
    positionne la combo à la valeur... c'est bien ce que tu veux non ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre confirmé Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Par défaut
    oui ... oui...
    c'est exactement ça ...

    Je n'ai pas bien regardé , j'ai surtout vu ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (String pays : listePays)
        {
            out.println("<option value=\"" + pays.getId() + "\">" + pays.getTexte() + "</option>");
        }
    Merci je vais essayer .

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

Discussions similaires

  1. Récupérer une valeur dans un formulaire SELECT javascript
    Par valentin12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/04/2014, 10h06
  2. selection une valeur dans une optionsCollection
    Par Diablo_22 dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/05/2008, 13h36
  3. [Interbase] Récupérer une valeur dans un select
    Par ftoutin dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/01/2007, 14h36
  4. récupérer une valeur dans un selected
    Par lacfab dans le forum Langage
    Réponses: 6
    Dernier message: 14/12/2005, 10h48
  5. Selection d'une valeur dans une autre table
    Par beurnoir dans le forum Access
    Réponses: 1
    Dernier message: 13/10/2005, 13h02

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