首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在上传多个文件时,Struts 2操作中文件对象数组为空/空

在上传多个文件时,Struts 2操作中文件对象数组为空/空
EN

Stack Overflow用户
提问于 2014-08-30 11:27:19
回答 1查看 1.3K关注 0票数 1

我试图在Struts 2应用程序中上传多个文件,但是每次我得到File[] fileUpload时都是空的。我在struts.xml中做了几次配置更改,但仍然将fileUplaod对象作为null或空。有人能告诉我该怎么做才能让它起作用吗?

相应的操作代码如下:在此操作中,我将检索文件对象数组并打印详细信息。

编辑:

DummyFileUploadAction.java**:**

代码语言:javascript
复制
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.xml**:**

代码语言:javascript
复制
<!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,它将在成功打印文件细节后呈现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-30 12:13:58

如果要向 interceptor添加参数,则应该引用defaultStack并使用拦截器的名称为param名称加上前缀或重构默认堆栈,但不应在操作配置中复制fileUpload拦截器。例如

代码语言:javascript
复制
<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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25581842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档