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

Struts 1 Java Discussion :

2 combobox dépendants


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Par défaut 2 combobox dépendants
    bonjour

    je veux créér 2 combobox dans ma jsp,les valeurs du 2eme combo dépendent du 1er :

    1-si je choisis la valeur ("x") du combo1 l'autre combo2 devient inactif ou bloqué

    2-si je choisis d'autres valeurs le contenu du combo2 sera différent en fonction de cette valeur

    comment je dois faire??sachant que je travail avec struts1.2

    merci pour votre aide

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Struts ne propose aucune solution pour cela, il faut que tu te tourne vers JavaScript.

  3. #3
    Expert confirmé

    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
    Par défaut
    Tu devrais jeter un oeil au tag select de Struts-Layout et ses attributs layoutId, onchange, ...
    Et pour les listes déroulantes dépendantes, regarde les tags options et optionsDependent et aussi la FAQ Struts-Layout.

  4. #4
    Expert confirmé

    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
    Par défaut
    Ci-dessous une solution qui fonctionne en Struts-Layout 1.3 :
    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
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
     
    <html>
    <head>
       <layout:skin includeScript="true"/>
       <script>
       function cacher()
       {
    	if ( document.nomDuFormBean.num1.value == 'x' )
    	{
    		document.getElementById("selCombo2F").style.visibility = "hidden" ;
    	}
    	else
    	{
    		document.getElementById("selCombo2F").style.visibility = "visible" ;
    	}
       }
       </script>
    </head>
     
    <body>
     
    <layout:form action="pathAction">
       <layout:line space="true">
    	<layout:select key="cle1" property="num1"  onchange="cacher();" >	
    		<layout:option value="" />
    		<layout:options collection="list1" property="num" labelProperty="nom" sourceOf="num2"/>
    	</layout:select>
    	<layout:select key="cle2" property="num2" layoutId="selCombo2">
    		<layout:option value=""/>	
    		<layout:optionsDependent collection="list2" dependsFrom="num1"/>
    	</layout:select>
       </layout:line>
    </layout:form>
     
    </body>
     
    </html>
    La deuxième combo disparaît si la valeur sélectée dans la première est égale à x.
    Et si tu choisis une autre valeur dans la première combo, les valeurs de la deuxième changeront.

    Pour constituer les listes, se baser sur ce qui est écrit dans la FAQ Struts-Layout dont j'ai donné le lien précédemment.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Par défaut
    ou je dois faire la dépendence entre "liste2"et "num1" indiqué dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <layout:optionsDependent collection="list2" dependsFrom="num1"/>
    et si je doit remplir les 2 combox avec des valeurs de ma base
    par exemple si je choisis dans le premier combo "client" il m'affiche
    dans le 2em combo la liste des clients qui se trouve dans la base
    comment je dois faire??

    merci

  6. #6
    Expert confirmé

    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
    Par défaut
    Alors, il faudrait créer une classe avec pour propriétés un objet de type String et un objet de type List, qui correspond à la deuxième liste déroulante :
    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
    public class UnObjet implements Serializable
    {
    	private String type;
    	private List list2 = new ArrayList();
     
    	public UnObjet(String type) {
    		this.type= type ;
    	}
    	public String getType() {
    		return this.type;
    	}
    	public void setType(String type) {
    		this.type=type;
    	}
    	public List getList2() {
    		return this.list2;
    	}
    	public void setList2(List liste) {
    		this.list2=liste;
    	}
    }
    La collection list1 est donc une collection d'objets UnObjet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    List list1 = new ArrayList() ;
     
    UnObjet unObjet = new UnObjet() ;
    unObjet.setType("client") ;
    List list2 = // appel de la méthode qui renvoie une liste d'objets Client à partir du résultat du select sur la table des clients ;
    unObjet.setList2(list2) ;
    list1.add(unObjet) ;
    Il faut mettre list1 dans le scope pour la rendre accessible dans la jsp.

    Et dans la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <layout:select key="cle1" property="type" onchange="cacher();" >	
    	<layout:option value="" />
    	<layout:options collection="list1" property="type" labelProperty="type" sourceOf="num"/>
    </layout:select>
    <layout:select key="cle2" property="num" layoutId="selCombo2">
    	<layout:option value=""/>	
    	<layout:optionsDependent collection="list2" property="num" labelProperty="nom" dependsFrom="type"/>
    </layout:select>

  7. #7
    Expert confirmé

    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
    Par défaut
    ça ne correspond pas vraiment à ce que tu as écrit au début de la discussion :
    Citation Envoyé par john_wili Voir le message
    2-si je choisis d'autres valeurs le contenu du combo2 sera différent en fonction de cette valeur

  8. #8
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Par défaut
    oui c'est vrai mais j'ai exprimé et expliqué le nouveau besoin
    dans la partie9 de la discussion

    en tous les cas j'ai vu la réponse à la question de mima_mine
    elle corespond exactement à mon besoin

    merci

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    Bonjour,

    J'essaye en vain de mettre en place cette dépendance avec struts-layout.

    Il faut mettre list1 dans le scope pour la rendre accessible dans la jsp.
    Je suis plutôt novice en Struts/Jsp, je n'ai pas compris comment il fallait le faire car effectivement, la jsp ne trouve pas "list1".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.jsp.JspException: Cannot find bean under name list1
    Merci d'avance

  10. #10
    Expert confirmé

    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
    Par défaut
    Pour mettre la liste dans le scope request par exemple, il suffit de coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("list1",list1) ;

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Pour mettre la liste dans le scope request par exemple, il suffit de coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setAttribute("list1",list1) ;
    Merci, enfin ça fonctionne !

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

Discussions similaires

  1. combobox dépendantes l'une de l'autre
    Par Scrabblouille dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/09/2019, 11h39
  2. Réponses: 7
    Dernier message: 14/06/2015, 20h16
  3. Créer une combobox dépendante d'une autre
    Par deeeel dans le forum NetBeans
    Réponses: 5
    Dernier message: 28/02/2014, 11h34
  4. [PHP 4] Deux ComboBox dépendants des uns et des autres
    Par khachkhouch dans le forum Langage
    Réponses: 1
    Dernier message: 25/09/2012, 22h04
  5. [Joomla!] Formulaire permettant de faire des combobox dépendantes
    Par touff972 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 23/08/2012, 17h58

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