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 :

Rafraîchir le contenu d'une liste déroulante


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Points : 33
    Points
    33
    Par défaut Rafraîchir le contenu d'une liste déroulante
    Bonjour,

    Dans une page Jsp, j'utilise des <select> dans mon formulaire de saisie pour afficher 2 listes déroulantes.

    Mon souci, c'est que la 2ème liste est dépendante de la première.

    Je souhaiterais donc pouvoir rafraîchir le contenu de la deuxième en fonction du contenu de la première.

    Je précise que la contruction de ces listes est réalisée par l'intermédiaire de méthodes d'une classe, car elles font appel à des requêtes Sql.

    Merci d'avance de vos éclaircissements !

  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 soumettre le formulaire via l'attribut onchange du tag select :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="elementSelected" onchange="document.nomDuFormulaire.submit();">
    et ensuite tu récupéres la valeur de l'élément sélecté et tu appelles la méthode avec en paramètre cette valeur pour constituer la collection permettant d'alimenter la deuxième liste déroulante.
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Merci pour ta réponse.

    Mais ayant du mal à voir comment intégrer tout ça, je joins mon code pour que ce soit plus concret.

    Listes "Domaines" et "Sous-Domaines", dans une Servlet "GestionParams"

    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
    	public ArrayList<String> listeDomaines() throws ServletException {
    		init();
    		ArrayList<String> listeDomaines = new ArrayList<String>();
    	  	String requete = "select distinct app from w_saisie_params";
    		ResultSet resultat = null;
    		resultat = accesBdd.selection(requete);
    		try {
    			while (resultat.next())
    			{
    				listeDomaines.add(resultat.getString("app"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return listeDomaines;
    	}
     
    	public ArrayList<String> listeSousDomaines(HttpServletRequest request) throws ServletException {
    		init();
    		String app = request.getParameter("app");
    		ArrayList<String> listeSousDomaines = new ArrayList<String>();
    	  	String requete = "select distinct sapp from w_saisie_params where app = '" + app + "'";
    		ResultSet resultat = null;
    		resultat = accesBdd.selection(requete);
    		try {
    			while (resultat.next())
    			{
    				listeSousDomaines.add(resultat.getString("sapp"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return listeSousDomaines;
    	}
    Affichage des listes déroulantes 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
    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
    <%
    GestionParams gestionParams = new GestionParams() ;
    %>
    <table>
    	<tr>
    		<td>
    			<form method="post" action="GestionApplis">
    			idutil<input type="text" name="idutil" value="<%out.println(idutil);%>" />
    			app:
    			<select name="app">
    			<%
                            ArrayList<String> listeDomaines = gestionParams.listeDomaines() ;
                            for (int i=0; i<listeDomaines.size(); i++)
                            {
                                          String item= (String) listeDomaines.get(i) ;
                            %>
    	   		<option value="<%=item%>"><%=item%></option>
    			<%
                            }
                            %>
    			</select>
    			sapp:
    			<select name="sapp">
    			<%
                            ArrayList<String> listeSousDomaines = gestionParams.listeSousDomaines(request) ;
                            for (int i=0; i<listeSousDomaines.size(); i++)
                            {
                                           String item= (String) listeSousDomaines.get(i) ;
                            %>
    	   		<option value="<%=item%>"><%=item%></option>
    			<%
                            }
                            %>
    			</select>
    			util:<input type="text" name="util" value="<%out.println(sapp);%>"/>
    			<%
                            if (idutil == null){
                            %><input name="modifier" type="submit" value="Ajouter" />
    			<%}
                            if (idutil != null){
                            %><input name="modifier" type="submit" value="Modifier" />
    		</form>	
    		</td>
    	</tr>
    </table>
    Merci d'avance !

  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
    Comme tu n'as pas donné de nom à ton formulaire, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="app" onchange="document.forms[0].submit();">
    Par contre, dans la méthode listeSousDomaines, il faudrait ajouter un test dans le cas où app est égal à null.
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Points : 33
    Points
    33
    Par défaut
    Bien vu pour le test, effectivement il faut que j'y pense.

    Par contre, pourquoi un submit sur l'évènement onChange ?

    Le submit va tenter de créer un enregistrement sql et va planter, alors que je souhaite juste que ma deuxième liste déroulante se mette à jour pour saisir le sous-domaine.

  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
    Je n'avais pas fait attention que tu faisais un ajout via le même formulaire mais pour constituer la deuxième liste déroulante à partir de l'élément sélecté dans la première, tu es bien obligé de soumettre le formulaire (ou alors, il faudrait alimenter la deuxième liste via une fonction Javascript).
    Il faudrait peut-être ajouter un test pour que l'ajout ne soit exécuté que lorsqu'on clique sur le bouton Ajouter et pareil pour la modif.
    Modératrice Java - Struts, Servlets/JSP, ...

Discussions similaires

  1. [WD5.5]Contenu d'une liste déroulante
    Par roms19 dans le forum WinDev
    Réponses: 8
    Dernier message: 01/03/2007, 11h00
  2. [PHP-JS] Contenu d'une liste déroulante
    Par luffyOP dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2007, 17h07
  3. Réponses: 3
    Dernier message: 24/01/2007, 10h36
  4. Réponses: 1
    Dernier message: 20/04/2006, 09h17
  5. Contenu d'une liste déroulante
    Par tets88 dans le forum Access
    Réponses: 3
    Dernier message: 20/03/2006, 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