IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Problème d'upload d'un fichier


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut 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 : 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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut
    J'ai essayé de paramétrer l'intercepteur comme ci-sessous :
    struts.xml
    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
     
    <action name="importFromJSONFile" class="rootImportBeanAction" method="importFromJSONFile">    
    			<interceptor-ref name="fileUpload"></interceptor-ref>
    			<interceptor-ref name="exception"/>
    			<interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
    			<interceptor-ref  name="workflow">
    				<param name="excludeMethods">input,back,cancel,browse</param>
    			</interceptor-ref> 
    			<interceptor-ref name="basicStack"/>
    			<interceptor-ref  name="i18n"  />
    			<interceptor-ref  name="params">
    				<param name="excludeParams">dojo\..*,^struts\..*</param>
    			</interceptor-ref>
     
    			<result name="success" type="tiles">InitImport</result>
    			<result name="input" type="tiles">InitImport</result>
    			<!-- <result name="success" type="redirectAction">
    				<param name="actionName">initImport</param>
    			</result> -->
    		</action>
    Mais, j'ai toujours le même message d'erreur.
    Info supplémentaitre, ma version de struts est : 2.3.1.2.
    Vraiment, je suis bloqué depuis 2 jours et ja'rrive pas à me débloquer. Merci d'avance pour l'aide.

  3. #3
    Membre éprouvé Avatar de Lician
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Mars 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Services de proximité

    Informations forums :
    Inscription : Mars 2011
    Messages : 93
    Par défaut
    Bonjour,

    Je ne vois pas ton action paramétrée dans struts.xml?...
    Comment sont organisés tes packages?... Je ne vois pas de controller spring au dessus de ta classe Action?...

    Si il n'y a pas de controller spring il faut donner le chemin complet de ta class action dans ton struts.xml.

    par exemple "com.backupRestore.action.RootAction"

    rootImportBeanAction correspond à quoi? Le nom de l'action défini dans un controller spring? Ou alors tu ne montres pas tout dans ton code je sais pas...

    Ça me parait flou...


    Cordialement

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut
    Citation Envoyé par Lician Voir le message
    Bonjour,

    Je ne vois pas ton action paramétrée dans struts.xml?...
    Comment sont organisés tes packages?... Je ne vois pas de controller spring au dessus de ta classe Action?...

    Si il n'y a pas de controller spring il faut donner le chemin complet de ta class action dans ton struts.xml.

    par exemple "com.backupRestore.action.RootAction"

    rootImportBeanAction correspond à quoi? Le nom de l'action défini dans un controller spring? Ou alors tu ne montres pas tout dans ton code je sais pas...

    Ça me parait flou...


    Cordialement
    Si si, il y a bien un controller spring, ci-dessous le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <bean id="rootImportBeanAction" class="com.backupRestore.action.RootAction" 
    		scope="prototype" parent="abstractStsSimpleAction">
    		<property name="rootImportBeanService" ref="rootImportBeanService" ></property>
    	</bean>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut
    Avec Firebug, je vois bien une requête POST avec la variable : qui est affectée au fichier que j'ai uploadé.
    Mais apparemment, mon problème est au niveau de l'intercepteur qui n'arrive pas récupérer le contenu de file.
    Mais, si c'est bien ça la cause de problème, la question est maintenant c'est quoi la solution

Discussions similaires

  1. [PHP 5.2] Problème d'upload dans un fichier
    Par runcafre91 dans le forum Langage
    Réponses: 9
    Dernier message: 28/11/2010, 14h27
  2. problème d'upload d'un fichier sur I.E
    Par comoco dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 03/02/2009, 09h24
  3. [DOM] Problème d'upload puis parsage fichier XML
    Par Valter dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 02/05/2008, 14h55
  4. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  5. [Upload] Problème upload de gros fichiers avec Firefox
    Par the rootsm@n dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2006, 20h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo