在Struts 2中是否有可能获得下载文件(流)*和*重定向的结果?

时间:2012-10-15 15:03:28

标签: struts2

我有以下struts def:

<result name="reportSuccessfullyDownloaded" type="stream">
  <param name="contentType">application/zip</param>
  <param name="contentDisposition">attachment;filename="%{filename}"</param>
</result>

它会下载一个.zip文件,该文件可以包含1-10个生成的pdf报告。

我想要做的是更改应用以处理以下情况:

  • 如果生成了所有报告,请使用“流”结果并下载 .zip文件。没有必要的重定向。
  • 如果生成某些报告但其他报告有错误,请使用 “stream”结果并使用生成的pdf下载.zip文件 然后重定向到错误页面,其中报告不是 生成列出。
  • 如果没有生成报告,请跳过下载并重定向到 错误页面列出了未生成的报告。

我的问题是:如何为一个动作提供多个“结果”?我不明白它是怎么可能的。是吗?或者我是否必须以某种方式使用“链”结果,这是非常气馁的?

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

我知道这已经很老了,但我建议您在会话中存储报告生成的状态,并提供一个服务于生成状态的ajax操作,以及另一个下载文件的操作。

通过这种方式,您可以多次更新报告生成的状态,并且可以很好地提供:

  • 1月 - 生成
  • 2月 - 错误#231,联系支持
  • 三月 - 生成
  • 四月 - 正在进行中......
  • 五月 - 待定

一旦完成所有工作,您也可以自动开始下载。 只需确保在用户重新进入页面时清除会话或者看起来合适。