struts 用smartupdate 以及 apache.commons.fileupload的问题

在把FileUpload或者smartupload与struts1.3结合(jsp + uploadactiono)使用过程中发现,如果在action mapping配置中不指定formbean,文件上传过程正常。如果指定了formbean,文件上传不正常,取不到文件。


struts-config.xml

    <action path="/uploadaction"
            name="TestForm"         <!--指定formbean-->
     type="UploadAction"
     parameter="method" >
     <forward name="success" path="/success.jsp" />
</action>

现象:在struts-config.xml文件中,如果指定了formbean——name="TestForm" ,则文件无法正确上传,UploadAction中的fu.parseRequest( request)方法返回值为null;如果去掉了说明formbean的name属性,则文件可以正常上传。

原因:struts的RequestProccessor.process已经包含了处理文件上传的方法。如果在action配置中设置了formbean ,那么在你自己的action处理request之前,struts已经在RequestProccessor.populate方法中处理了request,因此,在自己的action中就取不到上传的文件了。

处理:如果要自己在action中处理文件上传工作,那么就不要在配置文件中配置formbean。

其他选择:如果仍需使用formbean,那么可以使用struts内置的文件上传功能。具体使用方法见struts的相关文档,以及struts的upload例子。以下是几个文件片断:

method="post" enctype="multipart/form-data" >


更多信息请参见以下网址:
http://jakarta.apache.org/commons/fileupload/
http://struts.apache.org/
http://cancait.blog.163.com/blog/static/213357442009071313237/(看了这个解决的于是部分转载)

你可能感兴趣的:(apache,xml,jsp,struts,Blog)