在项目中使用excel将用户数据导入系统,由于导入的数据量不断增多,逻辑的判断和处理也越来越复杂,为了提高导入的速度和用户体验,决定采用多线程处理导入数据,并在页面给用户提示进度。
WebWork用的是2.2.7。
原来上传使用的是WebWork默认的上传拦截器fileUpload,加上execAndWait以后,偶尔会提示文件不存在。
[com.opensymphony.webwork.interceptor.FileUploadInterceptor] - <Removing file upload D:\SoftTool\tomcat55\work\Catalina\localhost\imanager\upload__2b4efc5d_12773f9bb52__7fac_00000002.tmp>
<java.io.FileNotFoundException: D:\SoftTool\tomcat55\work\Catalina\localhost\imanager\upload__2b4efc5d_12773f9bb52__7fac_00000002.tmp (系统找不到指定的文件。)
在网上搜了一下,有前贝说fileUpload在拦截之后就会把上传的文件删掉,exeAndWait是启用另一个线程去执行,所以有时候会出现文件不存在的情况。
为了保险起见,我新建了一个Interceptor,将临时文件拷贝一份赋给action。在Action执行之后将文件手动上传。
public String intercept(ActionInvocation invocation) throws Exception {
Object action = invocation.getAction();
if (action != null && action instanceof ImportSetWorkTurnAction) {
ImportSetWorkTurnAction setWorkTurnAction = (ImportSetWorkTurnAction) action;
File srcFile = setWorkTurnAction.getFile();
if (srcFile != null) {
File destFile = new File(srcFile.getPath() + ".bak");
FileUtils.copyFile(srcFile, destFile);
setWorkTurnAction.setFile(destFile);
}
}
return invocation.invoke();
}
运行之后发现还是有问题,setWorkTurnAction.getFile()拿到的文件为null,而action中的文件判空却显示文件不为空,检查一下,发现原来是我拦截器的
顺序有问题,我将新的拦截器直接放到了fileUpload之后,之后是defaultStack,而在defaultStack没执行之前上传的文件还没有为action的属性file赋值,所以在我的拦截器里就拿不到文件。将defaultStack放到新拦截器之后问题解决。
未完待续 。。。
分享到:
相关推荐
webwork2.17中文使用手册
webwork中文 webwork中文参考 webwork中文资料 webwork学习资料
详细的介绍了webwork的使用机制和标签的归类使用
webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档
webwork中上传文件,webwork文件上传.doc
chm格式的webwork标签帮助文档,英文的
webwork中文文档
webwork+spring整合例子 内带使用说明 以及webwork文档(中文) 下载
webwork2中文参考
是webwork中的一个jar包
使用webwork上传excel并导入数据库,上传时只能上传excel文件,数据库为mysql,可以根据需要自行修改。 数据库的配置也请自行修改。
自己学习webwork的参考手册,适合初学者
webwork2中文教程,实例讲述教材。
Webwork使用简介
WebWork完全自学!
webwork 2.2.6 中文版本,然后编译生成chm格式,方面查看。
webWork中文教程
WebWork入门例子 HelloWorld 包括相应的webwork相应的jar 希望对大家有用!!!
webwork2中文文档,是一个比较的中文文档