困扰了我一星期,是关于struts2 用ajax方式调用下载的
amis 2011-01-20 11:16:37 具体情况是这样的,
1.首先读数据库,生成文件在服务器。
2.再用<result name="success" type="stream">做了一个下载功能,下载生成在服务器的文件。已经解决中英文文件名的问题的了。单独调用是正常的
由于生成文件的时候比较长,我想增加用户体验,在查的长时间过程中,在页面弹出一个全屏屏蔽层,层中间再显示个loading的gif。这样的话,前台页面就要知道后台程序时候完成生成文件这个操作了,方便关闭前台显示的loading屏蔽层了。
我有2个思路
1.用ajax方法,ajax有个回调函数,我就知道什么时候关闭loading。但问题是ajax调用<result name="success" type="stream">进行下载的话,下载窗口此终不出来。
2.让strtus2完成后给前台返回一个标志或状态,但下面这2个action并没有返回页面的地方啊。
这个是生成文件的action
<action name="ConvertXML" class="com.struts.action.ConvertXMLAction">
<!-- action间跳转并能提交参数S -->
<result name="success" type="redirectAction">
<param name="actionName">download</param>
<param name="namespace">/</param>
<param name="fileName">${fileName}</param>
</result>
<!-- action间跳转并能提交参数E -->
</action>
这个是下载的action
<action name="download" class="com.struts.action.DownloadAction">
<result name="success" type="stream">
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="inputName">inputStream</param
</result>
</action>