1

Struts 2 アプリケーションで複数のファイルをアップロードしようとしていますが、取得するたびにFile[] fileUpload空になります。でいくつかの構成変更を行いましたが、オブジェクトを eitherまたは emptyとしてstruts.xml取得しています。誰かがそれを機能させるために何をすべきか教えてもらえますかfileUplaodnull

対応するアクション コードは次のとおりです。このアクションでは、ファイル オブジェクト配列を取得し、詳細を出力しています。

編集 :

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;
     
    } 
}

            

The struts.xmlis : 同じ構成セットで単一ファイルアップロードのファイルオブジェクトを取得できましたstruts.xml

struts.xml:

<!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.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ファイルの詳細が正常に印刷されるとレンダリングされます。

4

1 に答える 1

0

fileUploadインターセプターにパラメーターを追加する場合は、インターセプターの名前を参照して使用し、パラメーターdefaultStack名のプレフィックスを付けるか、デフォルトのスタックを再構築する必要がありますが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>   
于 2014-08-30T12:13:58.590 に答える