2014-08-30 85 views
1

我試圖在struts 2應用程序中上傳多個文件,但每次獲取時File[] fileUpload都是空的。我在struts.xml中進行了多項配置更改,但仍將fileUplaod對象設置爲null或空。可有人告訴我,我應該做的就是它的工作上傳多個文件時,struts 2 action中File對象的數組爲空/空

相應的動作代碼是什麼爲:在這次行動中,我檢索文件對象數組和打印細節

編輯:

DummyFileUploadAction.java

package com.cbuddy.common.action; 

import java.io.File;      
import com.opensymphony.xwork2.ActionSupport; 

public class DummyFileUploadAction extends ActionSupport{ 

    private File[] fileUpload; 
    private String fileUploadFileName; 
    private String[] fileUploadContentType; 


    public File[] getFileUpload() { 
     return fileUpload; 
    } 

    public void setFileUpload(File[] fileUpload) { 
     this.fileUpload = fileUpload; 
    } 

    public String getFileUploadFileName() { 
     return fileUploadFileName; 
    } 

    public void setFileUploadFileName(String fileUploadFileName) { 
     this.fileUploadFileName = fileUploadFileName; 
    } 

    public String[] getFileUploadContentType() { 
     return fileUploadContentType; 
    } 

    public void setFileUploadContentType(String[] fileUploadContentType) { 
     this.fileUploadContentType = fileUploadContentType; 
    } 

    @Override 
    public void validate() { 

     if (null == fileUpload) { 
      System.out.println("DummyFileUploadAction.validate()"); 
     } 
    } 

    public String uplaod(){ 
     return "success"; 
    } 
    public String execute() throws Exception{ 

    for (File file: fileUpload) { 
    System.out.println("File :" + file); 
    } 

    for (String fileContentType: fileUploadContentType) { 
    System.out.println("File type : " + fileContentType); 
    } 

    return SUCCESS; 

    } 
} 

struts.xml是:我能得到的文件對象與同一套配置單文件上傳

struts.xml

<struts> 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
    <constant name="struts.devMode" value="true" /> 
    <constant name="struts.custom.i18n.resources" value="ApplicationResources" /> 
    <constant name="struts.multipart.maxSize" value="1000000" /> 

    <package name="default" extends="struts-default,json-default" namespace="/"> 

<action name="upload" class="com.cbuddy.common.action.DummyFileUploadAction" method="uplaod"> 
      <result name="success">/uplaod.jsp</result> 
</action> 

     <action name="dummyUpload" class="com.cbuddy.common.action.DummyFileUploadAction" > 
      <interceptor-ref name="fileUpload"> 
      <param name="allowedTypes">image/jpeg,image/gif,image/png</param> 
      </interceptor-ref> 
      <interceptor-ref name="defaultStack"></interceptor-ref> 
      <result name="success">/success.jsp</result> 
      <result name="input">/uplaod.jsp</result> 


</action> 
    </package> 
</struts> 

然後將呈現文件一旦成功打印細節success.jsp

+0

我只看到一個文件,請貼出相關的代碼示例。 – 2014-08-30 11:40:32

+0

**無法使用原始問題發佈upload.jsp,因此在此張貼表單:** \t 2014-08-30 12:01:57

回答

0

如果你想參數添加到fileUpload攔截器,你應該通過引用攔截器的defaultStak和使用名稱的前綴設置了一個param名稱或重建默認堆棧做到這一點,但你不應該重複的動作配置的fileUpload攔截。例如

<action name="dummyUpload" class="com.cbuddy.common.action.DummyFileUploadAction" > 
    <interceptor-ref name="defaultStack"> 
     <param name="fileUpload.allowedTypes">image/jpeg,image/gif,image/png</param> 
    </interceptor-ref> 
    <result name="success">/success.jsp</result> 
    <result name="input">/uplaod.jsp</result> 
</action> 
+0

其實我已經試過這個了,但仍然只有null參數。它僅從validate()方法返回並返回結果作爲輸入。 – 2014-08-30 12:20:37

+0

'fileUploadFileName'也應該是'String []'。 – 2014-08-30 14:02:32

+0

我試過改變它,但仍然面臨同樣的問題。其他一些問題肯定存在。 – 2014-08-30 15:16:51

相關問題