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 :

Lier 2 liste déroulantes + jsp + taglibs


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut Lier 2 liste déroulantes + jsp + taglibs
    Bonjour,

    Je suis actuellement bloqué sur l'actualisation d'une liste déroulante par rapport au choix d'une autre liste déroulante. J'ai 2 listes déroulantes : pays et ville, et pour le moment ville m'affiche toutes les villes de tous les pays.
    Et lorsque je sélectionne un pays, j'aimerai pouvoir filtrer les villes sans changer de page (logique).

    Actuellement voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html:select name="tmp" property="paysId" styleClass="champ">
      <html:optionsCollection name='pays_list' label='nom' value='paysId' />
    </html:select>
     
    <html:select name="tmp" property="villeId" styleClass="champ">
      <html:optionsCollection name='ville_list' label='nom' value='villeId' />
    </html:select>
    Chaque élément de ville contient un getter vers le pays auquel il appartient.

    J'ai vu qu'il était "facile" de faire ce que je voulais avec du javascript et des balises html, mais j'aimerai savoir s'il y a un autre moyen (avec des taglibs par exemple) pour que ce soit plus "propre" que de melanger taglib, balises html, javascript, etc...

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    Hello!

    d'instinct, je dirais que lors d'une sélection par l'utilisateur d'un pays donné, tu submit ton formulaire, et dans l'action tu actualise la liste de tes villes en ne mettant que les villes du pays sélectionné

    et tu redirige vers la page actuelle....

    L'utilisateur verra le rechargement de la page, mais il demeure tout de même sur la même page

    EDIT : et du coup dans tes jsp tu utilises les taglib de struts (html, bean, logic,...) et tu met un petit javascript qui fait juste form.submit())

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut
    Comment je gère le cas du submit grace au javascript et le cas du submit lorsque le formulaire est rempli entierement (sachant que tous les champs sont facultatifs dans ce meme formulaire) ? pour que dans un cas je recharge la liste des villes et que je forward vers la meme page, et que dans l'autre cas je forward vers une autre page ?

    Pour moi le form.submit () equivaut a un click sur le bouton correspondant au submit du formulaire


    PS : Je n'ai jamais fait de JS.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    372
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 372
    Par défaut
    Tu es dans le vrai

    Le plus simple est de mettre un champ "hidden" dans la jsp, champ que tu remplis avec l'action à faire dans la fonction js juste avant le submit :

    jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <html:form action="MonAction">
        <html:hidden property="whatToDo"/>
        <html:select onchange="taFonctionJavascript(this,'validerVille')" name="tmp" property="paysId" styleClass="champ">
           <html:optionsCollection name='pays_list' label='nom' value='paysId' />
        </html:select>
     
        <html:select name="tmp" property="villeId" styleClass="champ">
           <html:optionsCollection name='ville_list' label='nom' value='villeId' />
        </html:select>
    </html:form>
    code js (à mettre soit dan sla JSP soit dans un fichier externe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    taFonctionJavascript(t, v){
        t.form.elements[0].value=v;
        t.form.submit();
    }
    ta classe Action :
    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
    public class AdministrationAction extends Action{
     
    	/**
             *
             */
    	public ActionForward execute(ActionMapping mapping,
    			ActionForm form,
    			HttpServletRequest request,
    			HttpServletResponse response)
    			throws IOException, ServletException {
     
    if(form!=null){
         TonForm f = (TonForm)form;
         String whatToDo = f.getWhatToDo();
         System.out.println("whatToDo  = "+whatToDo );
    }	
    }
    }
    Ton ActionForm :
    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
    package form;
     
    public class TonForm extends ActionForm {
    	// tes champs
            // le champ à ajouter :
            private String whatToDo;
     
    /*   getters & setters */
             /**
             * @return the whatToDo
             */
    	public String getWhatToDo() {
    		return whatToDo;
    	}
     
    	/**
             * @param whatToDo the whatToDo to set
             */
    	public void setWhatToDo(String whatToDo) {
    		this.whatToDo = whatToDo;
    	}
    }
    Et tu exécutes ca, : normalement tu auras d'affiché "validerVille" dans la console lors d'une sélection dans ta liste de pays....

  5. #5
    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
    Citation Envoyé par EpiKgohan Voir le message
    J'ai vu qu'il était "facile" de faire ce que je voulais avec du javascript et des balises html, mais j'aimerai savoir s'il y a un autre moyen (avec des taglibs par exemple) pour que ce soit plus "propre" que de melanger taglib, balises html, javascript, etc...
    Les tags select et optionsDependent de Struts-Layout permettent d'implémenter cette fonctionnalité.
    Regarde ici.

  6. #6
    Membre confirmé Avatar de badoress
    Inscrit en
    Mars 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 169
    Par défaut Ajaxtags
    tu peux utiliser aussi Ajaxtags qui te permet ça d'une maniere simple, facile et élégante

    vas voir ici et specialement le tag ajax:select

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Par défaut
    Merci pour vos aide.
    J'ai essayé struts layout et ça marche très bien.

    Encore merci

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/09/2010, 13h56
  2. Réponses: 71
    Dernier message: 04/08/2010, 16h37
  3. Lier checkbox, liste déroulante et input texte
    Par pymouse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/05/2006, 11h32
  4. [PHP-JS] Lier deux listes déroulantes
    Par budiste dans le forum Langage
    Réponses: 6
    Dernier message: 15/11/2005, 15h36
  5. [WD5.5] Lier deux listes déroulantes
    Par grellierj dans le forum WinDev
    Réponses: 7
    Dernier message: 11/10/2005, 17h33

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