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 :

Liste déroulante dans une JSP


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut Liste déroulante dans une JSP
    Bonjour tout le monde,

    Dans un site web j'aimerais mettre une liste deroulante dans un formulaire sur une JSP qui donnerais le choix de régions. Jusque la ca va mais j'aimerais conserver seulement le numéro de cette région qui est dans ma base de données mais afficher le nom des régions. J'ai fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <td><FORM>
    <SELECT name="regioncreation" size="1">
    <%for (int j=0;j<z.size();j++){
            Region r=(Region)z.get(j);
    %>
    <OPTION><%out.println(r.getNomRegion()); %>
    <%} %>
    </SELECT>
    </FORM>
    </td>
    Ca m'affiche bien toutes mes regions mais j'aimerais que lorsque j'en ai sélectionné une, ca envoie a ma servlet qui s'occupe de créer mon camping uniquement le numéro de la région. Et je vois pas comment faire.

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <OPTION value="<%=r.getNumeroRegion()%>"><%=r.getNomRegion()%></OPTION>
    penses aussi à la syntaxe
    qui est beaucoup plus simple que

  3. #3
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Conseil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <%
    final Iterator lIterator = z.iterator();
    while(lIterator.hasNext()){
            Region r=(Region)lIterator.next();
    %>
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <%for (int j=0;j<z.size();j++){
            Region r=(Region)z.get(j);
    %>
    L'iterator est meilleur que de faire un get() sur chaque élément.

    Bon courage.

  4. #4
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    C'est bon j'ai bien la liste des régions qui s'affiche. Maintenant ce que je voudrais c'est envoyé a ma servlet uniquement le numéro de la région sélectionné et non son appelation. Et je vois pas trop comment faire.

  5. #5
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Si tu fais comme t'a indique Jidefix en précisant la value de l'option (en rouge), ca doit le faire.

    Bon courage.

  6. #6
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ben si tu as appliqué mon exemple, le contenu de la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getParameter("regioncreation");
    est le numéro de ta région puisque tu affiche la veleur qui est entre les balise <OPTION> et </OPTION> mais le contenu réel de la variable qui sera envoyé au serveur est le contenu de l'attribut "value"

  7. #7
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Mais comment je fais mon input dans ce cas et où ?

    J'ai ca désormais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <td><FORM>
    <SELECT name="regioncreation" size="1">
    <%for (int j=0;j<z.size();j++){
            Region r=(Region)z.get(j);
    %>
    <OPTION value="<%=r.getIdRegion()%>"><%=r.getNomRegion()%></OPTION>
    <%} %>
    </SELECT>
    </FORM>
    </td>
    J'ai pas encore mis l'iterator je verrais ca pour une autre fois ou alors si j'ai le temps
    Mais quand je cliques sur mon bouton il fais rien et plante le prog si je touche a un autre bouton

    Pour récupéré mon numéro de région dans ma servlet je faisais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c.setNumRegion(Integer.valueOf(request.getParameter("regioncreation")));

  8. #8
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Normal tu dois mettre un attribut "action" dans la balise "form" pour lui dire vers quelle servlet le bouton doit envoyer le formulaire.

    Sinon ça me semble correct

  9. #9
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    J'ai mis ca maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <td><FORM action="/Camping/listeCamping" method="get" target="gestion">
    <SELECT name="regioncreation" size="1">
    <%for (int j=0;j<z.size();j++){
            Region r=(Region)z.get(j);
    %>
    <OPTION value="<%=r.getIdRegion()%>"><%=r.getNomRegion()%></OPTION>
    <%} %>
    </SELECT>
    </FORM>
    </td>
    Du coup il envoie bien vers la servlet mais ca marche pas mieux je vois pas trop comment ca doit marcher

  10. #10
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    J'ai une question con mais il est ou ton ?
    Tu l'as défini comment ton bouton pour envoyer le formulaire?

  11. #11
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    Je vous met le bout de code pour entrer un nouveau camping

    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
    <h2>Création d'un nouveau camping</h2>
    <table border=1>
    <tr>
    	<th>Région</th>
    	<th>Nom</th>
    	<th>Description</th>
    	<th>Image</th>
    </tr>
    <tr>
    <td><FORM action="/Camping2009/listeCamping" method="get" target="gestion">
    <SELECT name="regioncreation" size="1">
    <%for (int j=0;j<z.size();j++){
            Region r=(Region)z.get(j);
    %>
    <OPTION value="<%=r.getIdRegion()%>"><%=r.getNomRegion()%></OPTION>
    <%} %>
    </SELECT>
    </FORM>
    </td>
     
     
    	<td><input type="text" name="nomcreation"</td>
    	<td><input type="text" name="descreation"</td>
    	<td><input type="file" name="imgcreation"</td>
    </tr>
    </table>
    <input type="submit" name="bouton" value="Enregistrer">
    Et 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
    if(request.getParameter("bouton").equalsIgnoreCase("Enregistrer")){
    				Camping c;
    				c = new Camping();
    								c.setNomCamping(request.getParameter("nomcreation"));
    				c.setDescCamping(request.getParameter("descreation"));
    				c.setImgCamping(request.getParameter("imgcreation"));
    				c.setNumRegion(Integer.valueOf(request.getParameter("regioncreation")));
    				try {
    					Campings.enregistrer(c);
    					v=Campings.listeCampings();
    					i=v.size()-1;
    					request.setAttribute("liste", v);
    					request.setAttribute("indice", i);
    					request.setAttribute("regions",z);
    				} catch (Exception e) {
    					e.printStackTrace();
    				}
    			}
    Au debut de ma page j'ai deja une <form action="... donc je sais pas si c'est necessaire de le remettre. En tout cas dans l'etat actuel mon bouton ne fais rien, il ne plante pas tout de suite le programme mais je peux rien faire

  12. #12
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ben oui il plante pas le programme parce qu'il ne fait strictement rien

    Pour info la structure d'un formulaire ça ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form action="nomDeTaServlet" type = get>
        <input type = text name = "text1">
       <select name = "select1">
          <option value="1">option1</option>
          <option value="2">option2</option>
       </select>
        ... (autres input)
     
       <input type=submit name="bouton" value="Valider le formulaire">
     
    </form>
    Donc en gros ce qui ne va pas dans ton formulaire c'est que le submit doit etre entre les balises <form> et </form> du formulaire de ta page.

    Autres choses en vrac:
    - tu ne peux pas imbriquer deux formulaires, donc ton autre balise <form>, en plus de ne servir à rien, risque de faire mal marcher ta page
    - un input en dehors des deux balises form ne sera pas envoyé au serveur (donc tous tes autres input ne seront pas pris en compte


    Essaye de respecter un peu plus l'arborescence logique de l'HTML, l'imbrication des balises est fondamentale

  13. #13
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 191
    Points : 71
    Points
    71
    Par défaut
    En fait c'est bon j'ai réglé le problème. Comme j'avais deja un formulaire plus haut, le fait de mettre une balise </form> desactivait logiquement le bouton. J'ai donc enlevé le formulaire autour de ma liste déroulante et ca tourne nickel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <SELECT name="regioncreation" size="1">
    <%for (int j=0;j<z.size();j++){
            Region r=(Region)z.get(j);
    %>
    <OPTION value="<%=r.getIdRegion()%>"><%=r.getNomRegion()%></OPTION>
    <%} %>
    </SELECT>
    </td>
    Je met le code au cas où ca interesse certains. Du coup dans cet exemple ca affiche sur ma JSP le nom de mes regions ("r.getNomRegion()") mais ca n'envoit a ma servlet que le numéro correspondant ("r.getIdRegion()").

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/12/2011, 11h07
  2. liste déroulante dans une page jsp
    Par mike5923 dans le forum Struts 1
    Réponses: 3
    Dernier message: 03/01/2008, 23h28
  3. Afficher la valeur choisie d'une liste déroulante dans une textbox
    Par bouchette63 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 20/06/2006, 15h26
  4. [VB6]Créer une liste déroulante dans une dataGrid
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/05/2006, 10h32
  5. [EXCEL] Insertion liste déroulante dans une cellule
    Par the java lover dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/11/2005, 19h30

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