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 :
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
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>
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.
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"); }
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.
Partager