j'ai qq codes sur layout framework, comme ça
Ne faire pas attention aux chaînes de titles, c'est bonne.
dans le fichier struts-config.xml
dans la page JSP
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <action attribute="collectionInputForm" input="/jsp/strutsLayout/Collection/collectionInput.jsp" name="collectionInputForm" parameter="do" path="/collectionInput" scope="request" type="chapter2a.struts.action.CollectionInputAction"> <forward name="showCollection" path="display.layout.collection.input.form" /> </action>
dans le fichier Form
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 <layout:form action="collectionInput" styleClass="FORM" reqCode="save" key="struts.layout.collection.input.form.title"> <layout:pager maxPageItems="4" sessionPagerId="collectionInputPageID"> <layout:collection name="collectionInputForm" property="users" id="user" styleClass="FORM"> <layout:collectionItem property="id" title="struts.layout.collection.user.id" /> <layout:collectionInput formProperty="usrName" property="usrName" title="struts.layout.collection.user.username" /> <layout:collectionInput formProperty="usrNickname" property="usrNickname" title="struts.layout.collection.user.nickname" /> <layout:collectionItem property="infocity.infoCityName" title="struts.layout.collection.user.city" /> <layout:collectionItem property="infointerest.infoInterestName" title="struts.layout.collection.user.interest" /> <layout:collectionItem property="infoincomelevel.infoIncomeLevel" title="struts.layout.collection.user.income" /> </layout:collection> </layout:pager> <layout:message key="_______________________________________________________________________"/> <layout:submit> <layout:message key="struts.layout.collection.input.button.submit"/> </layout:submit> </layout:form>
et dans le fichier d'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 public class CollectionInputForm extends ActionForm { private User[] users = new User[0]; public void reset(ActionMapping mapping, HttpServletRequest request) { users = new User[0]; } public User[] getUsers() { return users; } public void setUsers(User[] users) { this.users = users; } /// for the collectionInput public String getUsrName(int index) { if (index>=this.users.length) return ""; return this.users[index].getUsrName(); } public void setUsrName(int index, String usrName) { if (index>=this.users.length) return; this.users[index].setUsrName(usrName); } public String getUsrNickname(int index) { if (index>=this.users.length) return ""; return this.users[index].getUsrNickname(); } public void setUsrNickname(int index, String usrNickname) { if (index>=this.users.length) return; this.users[index].setUsrNickname(usrNickname); } }
Ma problème est quand je faire submit la page va affichier rien
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 public class CollectionInputAction extends DispatchAction { /* * Generated Methods */ public ActionForward showList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { CollectionInputForm collectionInputForm = (CollectionInputForm) form; DataBaseControler control = new DataBaseControler(); collectionInputForm.setUsers(control.getUserList()); return mapping.findForward("showCollection"); } public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { CollectionInputForm collectionInputForm = (CollectionInputForm) form; DataBaseControler control = new DataBaseControler(); control.saveUsers(collectionInputForm.getUsers()); return mapping.findForward("showCollection"); } }
Faire attention à la code de formAction, même :
Si je les supprime, je vais receivoir toujours un erreur : out of bound
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (index>=this.users.length) return "";
Je ne sais pas pouquoi ??
Vous pouvez m'aider ?
Merci d'avance
Partager