我在前台键立了一如下的页面:
<form id="frmUpload" action="${base}/cmsmember/dataImportAct.jspx" method="post" enctype="multipart/form-data" onsubmit="return OnSubmit();" >
<table class="fullHeight" cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td nowrap="nowrap">
<span id="eUploadMessage">Upload a new file in this folder</span><br>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td width="100%"><input id="upload" name="upload" style="WIDTH: 100%" type="file"></td>
<td nowrap="nowrap"> <input id="btnUpload" type="submit" value="上传"></td>
</tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="backUrl" value="${wholeUrl}"/>
</form>
然后我配置了相应的action,响应action的代码类如下:package com.jeecms.cms.action.front;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import com.jeecms.cms.CmsMemberAction;
import com.jeecms.cms.manager.NsrMng;/**
* 数据导入类。
* @author sou
*
*/
@Scope("prototype")
@Controller("cms.dataImportAct")
public class DataImport extends CmsMemberAction {
public File getUpload() {
return upload;
} public void setUpload(File upload) {
this.upload = upload;
} public String dataImportAct() throws IOException
{
File str=upload;
if(str!=null)
{
contextPvd.setSessionAttr("msg", "读文件成功!");
}
return this.handleResult("dataImport");
}
private File upload; @Autowired
private NsrMng nsrMng;}问题是,当我点击上传时,跟踪发现,upload是null的,而我如果放个text控件上去读时又能读取得到。
请问应该如何解决,使我可以得到这个文件,建立一个inputStream对象呢。请高手指教。
<form id="frmUpload" action="${base}/cmsmember/dataImportAct.jspx" method="post" enctype="multipart/form-data" onsubmit="return OnSubmit();" >
<table class="fullHeight" cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td nowrap="nowrap">
<span id="eUploadMessage">Upload a new file in this folder</span><br>
<table cellspacing="0" cellpadding="0" width="100%" border="0">
<tr>
<td width="100%"><input id="upload" name="upload" style="WIDTH: 100%" type="file"></td>
<td nowrap="nowrap"> <input id="btnUpload" type="submit" value="上传"></td>
</tr>
</table>
</td>
</tr>
</table>
<input type="hidden" name="backUrl" value="${wholeUrl}"/>
</form>
然后我配置了相应的action,响应action的代码类如下:package com.jeecms.cms.action.front;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import com.jeecms.cms.CmsMemberAction;
import com.jeecms.cms.manager.NsrMng;/**
* 数据导入类。
* @author sou
*
*/
@Scope("prototype")
@Controller("cms.dataImportAct")
public class DataImport extends CmsMemberAction {
public File getUpload() {
return upload;
} public void setUpload(File upload) {
this.upload = upload;
} public String dataImportAct() throws IOException
{
File str=upload;
if(str!=null)
{
contextPvd.setSessionAttr("msg", "读文件成功!");
}
return this.handleResult("dataImport");
}
private File upload; @Autowired
private NsrMng nsrMng;}问题是,当我点击上传时,跟踪发现,upload是null的,而我如果放个text控件上去读时又能读取得到。
请问应该如何解决,使我可以得到这个文件,建立一个inputStream对象呢。请高手指教。
解决方案 »
- 关于用POI读取已存在的excel文件,并往里面添加内容的问题
- strtus2 iterator 的问题,实在是没写过,第一次,希望帮我学习一下!谢谢
- public @interface ,@interface 这个是啥意思??
- tomcat启动404,解决就给分
- java的算法问题
- struts2 jsp页面提交 404没有找到提交地址
- 怎样用tomcat来启动一个聊天室的服务端程序?(在线等待)
- 运行EJB出错:Cannot narrow remote object ...怎么办,急呀
- J2EE不允许修改本地文件夹?求救!
- j2ee下怎么产生ejb-jar.xml文件?
- 关于 hibernate Found two representations of same collection
- 如何制作三级四级分类目录呢
private String uploadFileName;
private String uploadContentType;
并提供相应的get/set方法。
代码如下:package com.jeecms.cms.action.front;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.fileupload.FileItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;import com.jeecms.cms.CmsMemberAction;
import com.jeecms.cms.manager.NsrMng;/**
* 数据导入类。
* @author sou
*
*/
@Scope("prototype")
@Controller("cms.dataImportAct")
public class DataImport extends CmsMemberAction {
public File getUpload() {
return upload;
} public void setUpload(File upload) {
this.upload = upload;
} public String getUploadFileName() {
return uploadFileName;
} public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
} public String getUploadContentType() {
return uploadContentType;
} public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
} public String dataImportAct() throws IOException
{
File str=upload;
if(str!=null)
{
contextPvd.setSessionAttr("msg", "读文件成功!");
}
return this.handleResult("dataImport");
}
private File upload;
private String uploadFileName;
private String uploadContentType; @Autowired
private NsrMng nsrMng;}
<!--数据导入动作-->
<action name="dataImportAct" method="dataImportAct" class="cms.dataImportAct">
<result>${tplPath}</result>
</action>
implements ServletRequestAware;
并加上
private HttpServletRequest request;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}不知道能不能解决问题再不行就 extends ActionSupport
如果不是要国际化或者是数据校验, action根本都不用继承ActionSuopport, 文件上传时靠的拦截器干的.! 注入requeust.? request拿ServletActionContext不是一样拿.?
看看是不是你这个package下的配置了其他自己的拦截器?
<interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/>
我把这个action改放到有fileUpload的package下,再运行时就发现可以得到file对象了。
LZ以后建议你以后定义你自己拦截器引用的同事
加上
<interceptor-ref name="defaultStack">
这个默认的拦截器引用包含很多拦截器,包括了文件上传的!