Bonjour,

Quand j'essaie de faire un unpload d'un fichier depuis une action struts, j'aurai l'erreur ci-dessous :

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
 
[STDOUT] 15:20:33,232 WARN  [OgnlValueStack] Error setting expression 'upload' with value '[Ljava.lang.String;@f6a6ae'
ognl.MethodFailedException: Method "setUpload" failed for object com.backupRestore.action.RootAction@1ceffb8 [java.lang.NoSuchMethodException: com.backupRestore.action.RootAction.setUpload([Ljava.lang.String;)]
	at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1265)
	at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1454)
	at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
	at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
	at com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:28)
	at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2225)
	at com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor.setProperty(CompoundRootAccessor.java:65)
	at ognl.OgnlRuntime.setProperty(OgnlRuntime.java:2225)
	at ognl.ASTProperty.setValueBody(ASTProperty.java:127)
	at ognl.SimpleNode.evaluateSetValueBody(SimpleNode.java:220)
	at ognl.SimpleNode.setValue(SimpleNode.java:301)
	at ognl.Ognl.setValue(Ognl.java:737)
	at com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:198)
	at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:161)
	at com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:149)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:276)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:187)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.inetpsa.fwk.v3.web.security.UserDetailsInterceptor.intercept(UserDetailsInterceptor.java:72)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.inetpsa.fwk.v3.web.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at com.inetpsa.sts.filters.StsRedirectFilter.callSuper(StsRedirectFilter.java:111)
	at com.inetpsa.sts.filters.StsRedirectFilter.doFilter(StsRedirectFilter.java:75)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378)
	at com.inetpsa.sts.security.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:69)
	at org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at com.inetpsa.sts.security.web.HttpRequestProcessingFilter.doFilterHttp(HttpRequestProcessingFilter.java:86)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174)
	at com.inetpsa.sts.security.web.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:62)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235)
	at org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53)
	at org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390)
	at org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175)
	at com.inetpsa.sts.security.web.FilterChainProxy.callSuperDoFIlter(FilterChainProxy.java:77)
	at com.inetpsa.sts.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:55)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoSuchMethodException: com.backupRestore.action.RootAction.setUpload([Ljava.lang.String;)
	at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1206)
	... 81 more
Mes codes sources :
Action.java
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
 
public class RootAction extends ActionSupport{
private File upload;
 
	/** The content type. */
	private String uploadContentType;
 
	/** The filename. */
	private String uploadFilename;
 
	/**
         * @return the upload
         */
	public File getUpload() {
		return upload;
	}
 
 
	/**
         * @param upload the upload to set
         */
	public void setUpload(File upload) {
		this.upload = upload;
	}
 
 
	/**
         * @return the uploadContentType
         */
	public String getUploadContentType() {
		return uploadContentType;
	}
 
 
	/**
         * @param uploadContentType the uploadContentType to set
         */
	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
 
 
	/**
         * @return the uploadFilename
         */
	public String getUploadFilename() {
		return uploadFilename;
	}
 
 
	/**
         * @param uploadFilename the uploadFilename to set
         */
	public void setUploadFilename(String uploadFilename) {
		this.uploadFilename = uploadFilename;
	}
 
/**
         * @return
         */
	public String initImport() {
		return SUCCESS;
 
	}
 
	/**
         * @return
         */
	//public String importFromJSONFile(){
	public String importFromJSONFile(){
		boolean result = false;
		try {
			if(this.getUpload() != null){
				FileInputStream fileReader = new FileInputStream(this.getUpload());
				int ch;
				StringBuffer strContent = new StringBuffer();
				while( (ch = fileReader.read()) != -1){
						strContent.append((char)ch);
				}
				fileReader.close();
				String content = strContent.toString();
				//call restore(String)
				this.restore(content);
				result = true;
			}
		} 
		catch (IOException e) {
			e.printStackTrace();
			this.addActionError("ihm.message.IOException");
		}
		if (result){
			return SUCCESS;
		}
		else {
			return INPUT;
		}
	}
 
}
Struts.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<action name="initImport" class="rootImportBeanAction" method="initImport">
			<result name="success" type="tiles">InitImport</result>
		</action>
	<action name="importFromJSONFile" class="rootImportBeanAction">
			<interceptor-ref name="fileUpload" />
			<interceptor-ref name="basicStack"/> 
			<result name="success" type="tiles">InitImport</result>
			<result name="input" type="tiles">InitImport</result>
 
		</action>
Tiles.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<definition name="InitImport" extends=".SimpleLayout">
		<put-attribute name="titleMessageKeyParam" value="ihm.title.initImport" />
		<put-attribute name="body"
			value="/WEB-INF/Restore/body.jsp" />
		<put-attribute name="toolbar"
			value="/WEB-INF/Restore/toolbar.jsp" />
	</definition>
Mes jsp :
body.jsp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<s:form action="importFromJSONFile" method="post" enctype="multipart/form-data" namespace="/">
		<table>
		<tr>
			<td>
				<s:file name="upload" key="ihm.label.field.importJSONFile"/>
			</td>
		</tr>
		</table>
	</s:form>
toolbar.jsp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<table>
	<tr>
		<td>
			<s:submit value="Importer" name="Importer" method="importFromJSONFile"/>
		</td>
	</tr>
</table>
Merci d'avance