我试图在Struts 2应用程序中上传多个文件,但是每次我得到File[] fileUpload时都是空的。我在struts.xml中做了几次配置更改,但仍然将fileUplaod对象作为null或空。有人能告诉我该怎么做才能让它起作用吗?
相应的操作代码如下:在此操作中,我将检索文件对象数组并打印详细信息。
编辑:
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.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,它将在成功打印文件细节后呈现。
发布于 2014-08-30 12:13:58
如果要向 interceptor添加参数,则应该引用defaultStack并使用拦截器的名称为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> https://stackoverflow.com/questions/25581842
复制相似问题