Problème d'upload d'un fichier
Bonjour,
Quand j'essaie de faire un unpload d'un fichier depuis une action struts, j'aurai l'erreur ci-dessous :
Code:
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:
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:
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:
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:
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:
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