3

私は次のストラットdefを持っています:

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

1〜10個の生成されたPDFレポートを含むことができる.zipファイルをダウンロードします。

私がやりたいのは、次の状況を処理するようにアプリを変更することです。

  • すべてのレポートが生成された場合は、「ストリーム」の結果を使用して、.zipファイルをダウンロードします。リダイレクトは必要ありません。
  • 一部のレポートが生成されたが、他のレポートにエラーがあった場合は、「ストリーム」の結果を使用して、生成されたpdfを含む.zipファイルをダウンロードしてから、生成されなかったレポートが一覧表示されるエラーページにリダイレクトします。
  • レポートが生成されなかった場合は、ダウンロードをスキップして、生成されなかったレポートが一覧表示されているエラーページにリダイレクトしてください。

私の質問は、1つのアクションに対して複数の「結果」を取得するにはどうすればよいですか?それがどのように可能かわかりません。それは...ですか?それとも、どういうわけか「チェーン」の結果を使用する必要がありますが、これは非常に推奨されていません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

これはすでに非常に古いことはわかっていますが、レポート生成のステータスをセッションに保存し、生成のステータスを提供する ajax アクションと、ファイルをダウンロードする別のアクションを用意することをお勧めします。

そのようにして、レポート生成のステータスを複数回更新し、次のように適切に提供できます。

  • 1 月 - 生成
  • 2 月 - エラー #231、サポートにお問い合わせください
  • 3月 - 生成
  • 4月 - 進行中 ...
  • 5月 - 保留中

すべてが完了したら、ダウンロードを自動的に開始することもできます。ユーザーがページを再入力したとき、または適切と思われる方法でセッションをクリアするようにしてください。

于 2013-02-12T10:57:36.013 に答える