Bonjour,
J'ai une application Struts2 dans laquelle j'ai des formulaires de saisies (jusque la rien d'exceptionnel...). Lorsque je soumet mon formulaire les données saisies dedans et mappées dans l'ActionSupport ne sont pas mises à jours. Elles sont toujours à null...je ne saisie pas trop pourquoi. Vous trouverez ci-dessous le code source :
struts.xml
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
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 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="false" /> <constant name="struts.action.extension" value="do" /> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.objectFactory.spring.autoWire" value="name" /> <constant name="struts.i18n.encoding" value="ISO-8859-1" /> <constant name="struts.i18n.reload" value="false" /> <constant name="struts.configuration.xml.reload" value="false" /> <constant name="struts.locale" value="fr" /> <constant name="struts.multipart.maxSize" value="100000000000" /> <package name="default" extends="tiles-default" namespace="/"> <interceptors> <interceptor name="params-filter" class="com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor" /> <interceptor-stack name="defaultStack"> <interceptor-ref name="exception" /> <interceptor-ref name="alias" /> <interceptor-ref name="servlet-config" /> <interceptor-ref name="i18n" /> <interceptor-ref name="chain" /> <interceptor-ref name="model-driven" /> <interceptor-ref name="fileUpload"> <param name="maximumSize">11204928</param> </interceptor-ref> <interceptor-ref name="static-params" /> <interceptor-ref name="conversionError" /> <interceptor-ref name="params" /> <interceptor-ref name="prepare" /> <interceptor-ref name="validation" /> <interceptor-ref name="workflow" /> <interceptor-ref name="userAware" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="defaultStack" /> <global-results> <result name="technicalError" type="chain"> errorAction </result> <result name="sessionInvalidError" type="tiles"> sessionInvalid </result> <result name="blank" type="tiles">blank</result> </global-results> <global-exception-mappings> <exception-mapping exception="java.lang.Exception" result="technicalError" /> <exception-mapping exception="com.omb.service.exception.UserSessionInvalidException" result="sessionInvalidError" /> </global-exception-mappings> <package name="omb" extends="default" namespace="/omb"> <action name="*OMBAction" class="com.omb.MyAction" method="doMyAction"> <result name="ok" type="tiles">maPage</result> </action> </package> </struts>
Classe Champ
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 <%@ taglib prefix="s" uri="/struts-tags"%> <%@ taglib uri="http://displaytag.sf.net/el" prefix="display"%> <link rel="stylesheet" href="<s:url value="/windowfiles/dhtmlwindow.css"/>" type="text/css" /> <script language="javascript"><!-- mes scripts --></script> <s:form action="valoriseHiddenOMBAction.do" theme="simple" id="hiddenForm"> <s:hidden name="champ1" value="%{champ1}"></s:hidden> <s:hidden name="champ2" value="%{champ2}"></s:hidden> </s:form> <table height="100%" width="100%" border="0"> <s:form action="doOMBAction.do" name="ombForm" id="idOmbForm" theme="simple"> <s:hidden name="user.userId" value="%{user.userId}"></s:hidden> <s:hidden name="period.periodId" value="%{period.periodId}"></s:hidden> <tr> <td> <input type="button" value="download" onclick = "javascript:location.href='afficheOMBReport.do';"/> </td> </tr> <tr> <td width="10%"><label ><s:text name="champ1.label"></s:text></label></td> <td width="4%"> </td> <td width="10%"><label ><s:text name="champ2.label"></s:text></label></td> </tr> <tr> <td> <s:select cssStyle="width:200" list="listChamp1" id="idChamp1" value="champ1.identifiant" listKey="identifiant" listValue="label"/> </td> <td> </td> <td> <s:select cssStyle="width:200" list="listChamp2" id="idChamp2" value="champ2.identifiant" listKey="identifiant" listValue="label"/> </td> </tr> <tr> <td> <input type="button" value="Afficher les valeurs" onclick = "javascript:location.href='afficheValuesOMBAction.do';"/> </td> </tr> </s:form> </table>
Classe 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
45
46
47 /** * */ package com.omb; public class Champ { private Integer identifiant; private String label; public Champ(Integer identifiant, String label) { super(); this.identifiant = identifiant; this.label = label; } /** * @return the identifiant */ public Integer getIdentifiant() { return identifiant; } /** * @param identifiant the identifiant to set */ public void setIdentifiant(Integer identifiant) { this.identifiant = identifiant; } /** * @return the label */ public String getLabel() { return label; } /** * @param label the label to set */ public void setLabel(String label) { this.label = label; } }
Lorsque la méthode doMyAction est appelé les résultat est toujours null pour les champs que j'affiche même si j'ai saisie de la données dedans.
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105 /** * */ package com.omb; import java.util.ArrayList; import java.util.List; import com.opensymphony.xwork2.ActionSupport; /** * * */ public class MyAction extends ActionSupport { private Champ champ1; private Champ champ2; private List<Champ> listChamp1; private List<Champ> listChamp2; public String execute() throws Exception { listChamp1 = new ArrayList<Champ>(); listChamp1.add(new Champ(1, "valeur1")); listChamp1.add(new Champ(2, "valeur2")); listChamp2 = new ArrayList<Champ>(); listChamp2.add(new Champ(3, "valeur3")); listChamp2.add(new Champ(4, "valeur4")); return SUCCESS; } public String doMyAction() { System.out.println("ID Champ 1 = " + champ1.getIdentifiant()); System.out.println("Label Champ 1 = " + champ1.getLabel()); System.out.println("ID Champ 2 = " + champ2.getIdentifiant()); System.out.println("Label Champ 2 = " + champ2.getLabel()); return "ok"; } /** * @return the champ1 */ public Champ getChamp1() { return champ1; } /** * @param champ1 the champ1 to set */ public void setChamp1(Champ champ1) { this.champ1 = champ1; } /** * @return the champ2 */ public Champ getChamp2() { return champ2; } /** * @param champ2 the champ2 to set */ public void setChamp2(Champ champ2) { this.champ2 = champ2; } /** * @return the listChamp1 */ public List<Champ> getListChamp1() { return listChamp1; } /** * @param listChamp1 the listChamp1 to set */ public void setListChamp1(List<Champ> listChamp1) { this.listChamp1 = listChamp1; } /** * @return the listChamp2 */ public List<Champ> getListChamp2() { return listChamp2; } /** * @param listChamp2 the listChamp2 to set */ public void setListChamp2(List<Champ> listChamp2) { this.listChamp2 = listChamp2; } }
Partager