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 :

[Débutant][<html:select>]options mises à jour dynamiquement


Sujet :

Struts 1 Java

  1. #1
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut [Débutant][<html:select>]options mises à jour dynamiquement
    Salut,
    je voudrais créer un formulaire pour saisir un adresse dans lequel on doit sélectionner le pays la ville dans une liste <html:select>,
    je voudrait dans mon formulaire que la liste des villes se charge dynamiquement lorsque l'utilisateur sélectionne un pays ;
    pour cela j'utilise le champ onchange="this.form.submit()" de la balise <html:select> mais cela ne marche pas :s.
    voici ma page 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
     
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
    <html>
    <head>
    <title>saisie adresse</title>
    </head>
    <body>
    <div id="conteneur">
     
    <div id="header">
    <h1>saisie adresse</h1>
    </div>
    <jsp:include flush="true" page="header.jsp" /> 
    <html:form action="/saisieAdresse.do" method="POST" focus="numero">
    <fieldset><legend>Adresse</legend>
    	<p><label for="numero">Numéro : 
    		<html:text property="numero" styleId="numero" />
    	</label></p>
    	<p><label for="rue">Rue : 
    		<html:text property="rue" styleId="rue" />
    	</label></p>
    	<p><label for="complementAdresse">Complément d''adresse : 
    		<html:text property="complementAdresse" styleId="complementAdresse" />
    	</label></p>
    	<p><label for="ville">Ville : 
    		<html:select property="ville" styleId="ville">
    			<html:options collection="villes"
    				property="identifiant" labelProperty="nomVille" />
    		</html:select>
    	</label></p>
    	<p><label for="pays">Pays : 
    		<html:select property="pays" styleId="pays"
    			onchange="this.form.submit();">
    			<html:options collection="listePays"
    				property="identifiant" labelProperty="nomPays" />
    		</html:select>
    	</label></p>
    <html:submit property="submit" value="ajouter l'adresse" />
    </fieldset>
    </html:form>
    </div>
    </body>
    </html>
    ici ma fonction execute de mon 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
    19
     
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    		HttpServletRequest request, HttpServletResponse response)
    		throws Exception {
    	request.setAttribute("listePays", BeanUtil.loadPays());
    	Session session = HibernateUtil.currentSession();
    	if ( (((SaisieAdresseForm)form).getPays())!=0){
    		Pays pays = (Pays)session.load(Pays.class,((saisieAdresseForm)form).getPays());
    		request.setAttribute("villes",pays.getVilles());
    	}else{
    		Ville ville = new Ville();
    		ville.setNomVille("----------");
    		Set<Ville> villes = new HashSet<Ville>();
    		villes.add(ville);
    		request.setAttribute("villes",villes);
    	}
    	return mapping.findForward("saisieAdresse");
    }
    mes getters et mes setters sont bien créé dans mon ActionForm, et pour l'instant je ne fait rien dans mon action à par la mise à jour des attribut de la variable request.

    En fait, le problème est le suivant :
    quand je sélectionne un nouveau pays, la liste des ville n'est pas mise à jour, et quand je clic sur le bouton submit, la liste des ville est mise à jour .

    pouvez vous m'aider à régler ce problème ?
    Y-a-t-il un moyen de re-diriger l'action de onchange vers une autre Action pour éviter les problème de vérification des champs et tout ça, en fait pour accéder à ma page je passe d'abord par une action InitialiserPageAdress qui génère les collection dont j'ai besoin et les met comme attribut de la variable request (elle pourrait me servir pour la mise à jour de ma liste de ville plutôt que l'Action principale qui demande une vérification des champ et qui risque d'inscrire des éléments dans la base de données sans que l'utilisateur ai vérifié les données qu'il aurait rentré ).
    merci d'avance.

  2. #2
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    essaye plutot ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html:form action="/saisieAdresse.do" name="myform" method="POST" focus="numero">
     
    ....
        <html:select property="pays" onchange="document.myform.submit()">
        ...
        </html:select>
     
     
    .....
     
     
    </html:form>
    j ai vu ca la :

    http://java.developpez.com/faq/strut...=list#DropDown

  3. #3
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    en fait, c'est le premier truc que j'ai testé, mais ça n'a pas marché, je me suis dit qu'il falait changer le "myform" par un truc qui va mieu à ma page (mais c'est pas précisé quoi) j'ai donc presque tout essayé, mais sans résultat

  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
    Citation Envoyé par anayathefirst
    en fait, c'est le premier truc que j'ai testé, mais ça n'a pas marché, je me suis dit qu'il falait changer le "myform" par un truc qui va mieu à ma page (mais c'est pas précisé quoi) j'ai donc presque tout essayé, mais sans résultat
    Il faut remplacer myform par le nom du form-bean correspondant à l'ActionForm SaisieAdresseForm.

    Sinon, dans la méthode execute de ton Action, il y a une erreur ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pays pays = (Pays)session.load(Pays.class,((saisieAdresseForm)form).getPays());
    C'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pays pays = (Pays)session.load(Pays.class,((SaisieAdresseForm)form).getPays());
    Et enfin, vérifies que tu passes bien dans le if :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	if ( (((SaisieAdresseForm)form).getPays())!=0)

  5. #5
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    en fait, j'ai corrigé les erreurs, mais ça ne marche toujours pas :'(
    j'ai essayé de rajouter des System.out.println("truc") dans ma méthode execute, mais j'en déduit qu'aparemment il ne passe pas du tout pas cette méthode lorsque je modifi la valeure le la liste pays ...

  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
    Et l'ActionForm est-elle exécutée ?
    Si oui, peut-être as-tu une erreur de validation ?

  7. #7
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    non, mon ActionForm n'est pas executé non plus ...
    et puis ... je n'ai pas encore de méthode de validation

  8. #8
    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 as bien codé le onchange comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:select property="pays" onchange="document.nomDeTonFormBean.submit();">

  9. #9
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    si le nom de mon FormBean est bien SaisieAdresseForm alors oui.
    mais pour l'instant, la clause onchange ne fait structement rien, l pire, c'est que ne me génère même pas d'erreur pour déboguer.

  10. #10
    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
    Peux-tu montrer comment tu as déclaré ton form-bean dans le struts-config.xml ?

  11. #11
    Membre habitué Avatar de anayathefirst
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    326
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 326
    Points : 182
    Points
    182
    Par défaut
    salut,
    désolé, je change complètement de point de vue, j'ai fini par opter pour struts layout, c'est carément plus pratique, en plus, ça génère du code similaire à du AJAX, je n'ai même pas besoin de recharger ma page lorceque je modifi la valeur du pays sélectionné
    pour ceux que ça interesse, voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <layout:select key="pays" property="pays"
          styleClass="FIELD">
       <layout:option value="" />
       <layout:options collection="listePays" labelProperty="nomPays" name="pays" property="identifiant" sourceOf="ville" />
    </layout:select> 
     
    <layout:select key="ville" property="ville"
          styleClass="FIELD">
       <layout:optionsDependent collection="villes" property="identifiant" dependsFrom="pays" labelProperty="nomVille" />
    </layout:select>
    merci à vous tous, en fait, c'est sur ce forum que j'ai trouvé cette alternative que je n'osais pas envisager...mais c'est pratique finalement.

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

Discussions similaires

  1. Mise à jour dynamique select
    Par zozoman dans le forum jQuery
    Réponses: 0
    Dernier message: 25/02/2014, 10h57
  2. [AC-2007] List Box Selection Multiple: problème mise à jour macro
    Par giopas dans le forum VBA Access
    Réponses: 12
    Dernier message: 28/03/2011, 10h29
  3. Réponses: 1
    Dernier message: 17/08/2009, 01h00
  4. Mise à jour dynamique d'un champs
    Par Badiste dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/10/2006, 15h18
  5. selection mulitple pour mise à jour
    Par Daniel MOREAU dans le forum Access
    Réponses: 2
    Dernier message: 23/08/2006, 15h39

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