Bonjour à tous,
j'essaie de faire deux listes de choix dépendantes sous struts, basé sur la méthode le premier onchange soumet le formulaire qui permet de rafraichir le deuxieme select.
Ceci marche à peu près mis à part que le premier choix effectué par l'utilisateur n'est pas pris en compte, il faut qu'il fasse un deuxieme choix pour que le second menu soit raffraichit.
Une fois ce cap passé, tout va pour le mieux dans le meilleur des mondes.
Je me demandes si cela ne vient pas du fait que la mise a jour des entrées du second select se fait dans la méthode reset du Form... ? Ci dessous les différents fichiers impliqués :
__________
page jsp
__________
__________
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <html:form action="/SubmitDomains" > <html:select property="selectedDomain" onchange="submit()"> <html:option value="">Sélectionner un domaine</html:option> <html:optionsCollection property="domaines"/> </html:select> <html:select property="selectedProject" onchange="submit()"> <html:option value="">Sélectionner un projet</html:option> <html:optionsCollection property="projets"/> </html:select> </html:form>
pages 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 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ HttpSession session = request.getSession(false); selectedDomainForm theForm = (selectedDomainForm) form; String dom=theForm.getSelectedDomain(); System.out.println(dom); String proj=theForm.getSelectedProject(); System.out.println(proj); session.setAttribute("domain", dom); session.setAttribute("project", proj); return mapping.findForward("DomainSelected");
fichier Form
__________
Si vous avez des idées qui pourraient expliquer le fait que le premier choix du select n'est pas pris en compte, j'en serais ravi, merci d'avance.
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 public class selectedDomainForm extends ActionForm{ private String selectedDomain; private String selectedProject; private ArrayList domaines=new ArrayList(); private ArrayList projets=new ArrayList(); public ArrayList getDomaines() { return domaines; } public void setDomaines(ArrayList arr){ domaines=arr; } public ArrayList getProjets() { return projets; } public void setProjets(ArrayList arr){ projets=arr; } public String getSelectedDomain(){ return selectedDomain; } public void setSelectedDomain(String loo){ selectedDomain=loo; } public String getSelectedProject(){ return selectedProject; } public void setSelectedProject(String loo){ selectedProject=loo; } public void reset(ActionMapping mapping, HttpServletRequest request) { this.domaines.clear(); this.projets.clear(); HttpSession session = request.getSession(false); String temp= new String((String)session.getAttribute("domaines")); if(temp==null){ domaines.add(new LabelValueBean("domaine1","domaine1")); } else { //Ici, on a un domaine choisi -> on chope les projets correspondants StringTokenizer arg=new StringTokenizer(temp,";"); String test; while(arg.hasMoreTokens()){ test=arg.nextToken(); domaines.add(new LabelValueBean(test,test)); } } if(session.getAttribute("domain")==null){ System.out.println("pas de domaine"); } else{ System.out.println("on a bien choisi un domaine"); String selected=(String)session.getAttribute("domain"); String login=(String)session.getAttribute("login"); String mdp=(String)session.getAttribute("mdp"); User pers=new User(login, mdp); QC ap=new QC(); String restemp=ap.getProjects(pers.getDefDomain(), pers.getDefProject(), login,mdp,selected); StringTokenizer arg=new StringTokenizer(restemp,";"); String pro; while(arg.hasMoreTokens()){ pro=arg.nextToken(); projets.add(new LabelValueBean(pro,pro)); } } //domaines=(ArrayList)session.getAttribute("domaines"); } }
Partager