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 :

Probleme Liste Deroulante


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Par défaut Probleme Liste Deroulante
    Bonjour tout le monde,

    Dans mon projet actuel, je travail sur une application web en java, et dans laquelle j'utilise des pages JSP biensur.
    Dans ma page j'utilise trois listes deroulantes, et dans la premiere je prends les valeurs d'une seule colonne d'une table "maTable" ds la BD, et que dans la deuxieme liste, je voudrais mettre la deuxieme colonne (mais en foction de la valeur choisi ds la premiere liste deroulante).
    exp:
    dans "maTable" j'ai deux colonne "col1" et "col2"

    "col1" "col2"
    A | AA
    A | AAA
    B | BBB
    C | C
    C | CCC

    et je veux ds ma page jsp, quand je selectionne la Valeur "A" ds la 1er list deroulante, ---> Avoir les valeurs "AA" et "AAA" ds la deuxieme liste deroulante.

    Merci de me dire comment peux-je le faire.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 70
    Par défaut
    Une petite recherche aurait pu t'aider plusieurs discussion ont ce sujet comme par exemple celle-ci
    http://www.developpez.net/forums/sho...d.php?t=354143
    La prochaine fois n'oublie pas que est ton ami

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Par défaut
    Bonjour,
    Mais moi je ne travail pas avec le framwork struts, donc j'ai d'action ??

    Merci beaucoup

  4. #4
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Meme sans utiliser struts, le probleme reste le meme. L'idée est que lorsque l'on clique sur un champs de la premiere liste, cette valeur soit renvoyé au serveur (onchange à mettre dans la balise select de la premiere liste, pour ceci, regarder du coté de javascript comme ca marche). Il suffit alors de recuperer la liste associée à la valeur qui a été saisie et la renvoyer à la JSP pour remplir le deuxième select avec.
    Il existe tout un tas de topic qui explique comment faire ceci, avec ou sans struts à mon avis. Il va valloir chercher un peu.

    Bonne chance

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    Pour compléter, tu as deux alternatives à l'aller-retour serveur "classique" (parfois lourd car il faut recharger correctement tout ce qui a déjà été saisi, ca peut être fastidieux à mettre en oeuvre sur certains formulaires compliqués) :

    - Si ta table est de taille raisonnable (disons moins de 500 lignes par exemple), tu peux faire tout ce traitement en javascript. Les balises option peuvent être mises en style.display='hidden', tu peux donc simplement charger intégralement tes deux listes, ainsi que ta table sous forme de tableau javascript, puis parser toutes les options de ta seconde liste à chaque fois que tu changes la valeur de ta première (onchange). Ces derniers temps j'ai tendance à choisir cette solution, qui a l'avantage de la rapidité, tant dans le codage qu'à l'utilisation.

    - Si ta table est très grosse, ou si pour une raison ou une autre tu préfères passer par le serveur, tu peux aussi faire ca en Ajax. Mais vu que je ne m'y connais pas en la matière, je ne peux pas te dire concrètement comment faire ça.

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 45
    Par défaut
    Mon probelem c'est que lors de mon recuperation des parametres que je voulais prendre, je perd toutes les valeurs des champs qui sont deja été modifiée (les valeurs de mes champs, sont de ma table, mais ils sont pas encore mis à jours).

    Dans mon formulaire j'ai plusieurs champs corresponds aux differrent tables, et des listes deroulantes aussi, et pour cela j'ai fais un code pour recuperer les valeurs selectionnés, --> mais je perd toujours les autres valeurs des champs txt.
    voici la fonction :
    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
    function getMyParam(){
     
    var numDoc = <%=request.getParameter("numeroDocument")%>;
    var dateCreation = document.FormEditDB.DateCreation.value;
    var typeDoc = document.FormEditDB.TypeDocument.value;
    var demandeur = document.FormEditDB.Demandeur.value;
    var nomGene = document.FormEditDB.NomGenerateur.value;
    var constructeur = document.FormEditDB.Constructeur.value;
    var officine = document.FormEditDB.Officine.value;
    var commandeSO = CommandeSO.value
     
    document.FormEditDB.action = "/jsp/agr_consult/agr_edit.jsp?operation=Modifier"+"&numeroDocument="+numDoc 
    									+"&typeDocument="+typeDoc+"&demandeur="+demandeur+"&nomGenerateur="+nomGene
    									+"&constructeur="+constructeur+"&dateCreation="+dateCreation+"&officine="+officine 
                                                                            +"&commandeSO="+commandeSO;
    document.FormEditDB.target = "mainFrame";
    		document.FormEditDB.submit();
    	}
    et mes listes sont :
    1- liste type doc:

    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
     
    <select name="TypeDocument">
              	<%
                DB_TableTypeDocument tTypeDocument = new DB_TableTypeDocument();
                    Vector listTypeDocument = tTypeDocument.getTousTypeDocument();
                    ListIterator iterTypeDocument = listTypeDocument.listIterator();
                            while (iterTypeDocument.hasNext()) {
                                    Agr_TypeDocument aTypeDocument = (Agr_TypeDocument) iterTypeDocument.next();
                            %>
        			<OPTION value="<%= aTypeDocument.getType()%>"><%= aTypeDocument.getType()%></OPTION>
        		<%
                            }
                    %>
              </select>
              	<%
                            typeDocument = request.getParameter("typeDocument");
                            if (typeDocument != null){  %>
      				<script language="javascript">
        				document.FormEditDB.TypeDocument.value = "<%=typeDocument%>";
      				</script>
    			<%
                            }
                            %>
    2- liste Generateurs (--> definie son constructeur)

    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
     
    <select name="NomGenerateur" onchange="getMyParam()">
     
              <%
                Vector listNomGeneAutorise = tGeneAutorise.getListeNomGeneAutorise();
                    ListIterator iterNomGeneAutorise = listNomGeneAutorise.listIterator();
                            while (iterNomGeneAutorise.hasNext()) {
                                    String nomGene = (String) iterNomGeneAutorise.next();
                       %>
        			<OPTION value="<%= nomGene %>"><%= nomGene %></OPTION>
        	  <%
                            }
                    %>	
              </select>
              <%
              if (nomGenerateur!=null) {
              %>
              <%= nomGenerateur %> <BR>
              <% } %>
    3- liste constructeur (en fonction du generateur)
    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
    <select name="Constructeur" >
              <%
              
    	          nomGenerateur = request.getParameter("nomGenerateur");
    	          Vector listConstructeur = tGeneAutorise.getListeConstructeur(nomGenerateur);
    	          ListIterator iterConstructeur = listConstructeur.listIterator();
    			  while (iterConstructeur.hasNext()) {
    				String cons = (String) iterConstructeur.next();
              %>
        			<OPTION value="<%= cons %>"><%= cons %></OPTION>
        	  <%
    		  }
              %>	
              </select>
    grace au nom du generateur, j'ai pu trouver ces constructeurs, mais lors de la recuperation des parametres de mes listes, je perds les infos ds d'autres champs.
    Comment peux-je faire stp ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Par défaut
    J'ai pas eu le courage d'analyser tout ton code, mais dès le début il y a quelque chose de bizarre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    document.FormEditDB.action = "/jsp/agr_consult/agr_edit.jsp?operation=Modifier"+"&numeroDocument="+numDoc 
    									+"&typeDocument="+typeDoc+"&demandeur="+demandeur+"&nomGenerateur="+nomGene
    									+"&constructeur="+constructeur+"&dateCreation="+dateCreation+"&officine="+officine 
                                                                            +"&commandeSO="+commandeSO;
    document.FormEditDB.target = "mainFrame";
    document.FormEditDB.submit();
    De 2 choses l'une, soit tu submit ton form, et dans ce cas les valeurs de tes champs seront ajoutées automatiquement à la requête, soit tu crées une requête à la main en js, et dans ce cas ce n'est pas un submit que tu doit appeler, mais un document.location (vu que tu passes par une URL, et plus par un submit de formulaire).
    Mais faire un submit avec un action "/machin.jsp?parm1=xxx&param2=yyy", ca ne sert à rien, il ne tiendra pas compte de tes paramètres "?parm1=xxx&param2=yyy".

    Autre remarque, ton code JSP est vraiment peu lisible, notamment à cause de tout ton code java qui récupère les données et les affiche. Si tu ne veux pas, ou ne peux pas passer par un framework comme Struts, tu devrais au moins utiliser les balises JSTL, qui font beaucoup de bien à la lisibilité du code.

    Dernière chose ... as-tu envisagé d'implémenter l'une des solutions que je proposais ?

Discussions similaires

  1. probleme liste deroulante
    Par enimnez dans le forum Struts 1
    Réponses: 1
    Dernier message: 17/05/2008, 14h14
  2. Probleme liste deroulante
    Par lelapinrusse dans le forum IHM
    Réponses: 2
    Dernier message: 13/01/2008, 10h34
  3. probleme listes deroulantes dependantes
    Par neoboy dans le forum IHM
    Réponses: 5
    Dernier message: 20/07/2007, 15h43
  4. Probleme liste deroulante
    Par lemagicien dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2006, 17h24
  5. [javascript] Probleme liste deroulante
    Par samtheh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/12/2005, 14h13

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