bonjour tous le monde
je suis entraint de développer une application web en utilisant struts et j'ai rencontrer une defficulté au niveau des tag select je veut qu'ils soient remplient apartir de la base de donné.
à ce stade j'ai testé avec de simple tableaux String[]. voila ce que j'ai fait:
j'ai une page index.jsp contenant un formulaire.en validant, l'Action associer à ce formaliare est applé pour me forwarder normalement vers une page dossier.jsp qui contient les tag select que je veut remplire à partire du tableau
String[] appelé "listeFonction" que j'ai ajouter comme attribut dans le bean associer à la jsp dossier.jsp.
j'ai ajouteé une action pour initialiser ce tableau avec des valeur qcq.
donc dans mon struts-config j'ai fait ceci :
donc j'ai ajouté un Action intermediare applé InitAction associer au meme Bean que la page dossier.jsp pour pouvoire acceder au atributs de ce formulaire et notament le tabeau de String[] "listeFonction" pour le remplire :
Code xml : 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 <struts-config> <!-- Form bean --> <form-beans> <!-- Bean Accueil pour index.jsp--> <form-bean name="AccueilBean" type="Bean.AccueilBean"> </form-bean> <!-- Bean Dossier pour dossier.jsp --> <form-bean name="DossierBean" type="Bean.DossierBean"> </form-bean> </form-beans> <!-- Action mapping --> <action-mappings> <!-- Action Accueil --> <action path="/accueil" type="Action.AccueilAction" name="AccueilBean" validate="true" scope="session" input="/vues/index.jsp"> <!-- <forward name="success" path="/vues/Dossier.jsp"></forward> --> <forward name="success" path="/init.do"></forward> </action> <!-- Action pour initialiser le tabeau "listeFonction" --> <action path="/init" type="Action.InitAction" name="DossierBean" scope="session"> <forward name="success" path="/vues/Dossier.jsp"></forward> </action> <!-- Action Dossier --> <action path="/Dossier" type="Action.DossierAction" name="DossierBean" validate="true" scope="request" input="/vues/Dossier.jsp"> <forward name="Dsuccess" path="/vues/success.jsp"></forward> </action> </action-mappings> <!-- Message resources --> <message-resources parameter="messages.ApplicationResources"></message-resources> </struts-config>
voila la methode excute de cet Action qui initialise le tableau "listeFonction" :
j'espere que j'été clair jusqu'à maintenant.
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 public class InitAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { DossierBean frm=(DossierBean)form; String[] lst={"programeur","analyste","developpeur"}; frm.setListeFonc(lst); return mapping.findForward("success"); } }
et dans ma page Dossier.jsp j'ai fait :
bien sur mon tag <html:form> contient l'attribut name="DossierBean"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <html:select property="fonexc" size="8" multiple="multiple" styleClass="champs"> <html:optionsCollection property="listeFonc"/> </html:select>
c'est pour cela que j'ai pas mis de name dans la tag <html:seletc> et <html:optionsColletion>
le probleme que ca ne marche pas.
je ne sais pas si c'est correcte ce que j'ai fait.
est ce qu'il n'y a pas de maniere plus simple pour faire.
merci d'etre aussi passion
Partager