最近在使用struts2做一个多文件上传,使用的是Commons-FileUpload组件,参照官方的一篇文档(http://struts.apache.org/2.0.14/docs/file-upload.html),总是上传不成功,临时文件也都上传到指定目录下了,就在取不到该文件,引用时报空指针异常,实际上就是从临时目录中拿不到该已上传文件的引用,多方查找资料都无法解决,耗了2,3天的时间,最后按照一本书(Struts 2 Design and Programming: A Tutorial)中的源代码一步一步去做,终于上传成功了,对比代码发现是struts.xml配置不同,官方文档是:
<action name="doUpload" class="com.example.UploadAction">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/jpeg,image/gif</param>
</interceptor-ref>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
<result name="success">good_result.jsp</result>
</action>
而实际上应该把<interceptor-ref name="basicStack"/>这一行放到<interceptor-ref name="fileUpload">的后面,没有这一行验证功能就没有了。
不管怎样这篇文档真的很详细,比起网上搜到的其他文档来说,参考价值极高,只是是英文的缘故,可能我也没有完全看懂里边的玄机就开始实践,才出这个问题。