2

struts2フレームワークを使用してアプリケーションを開発しています。ユーザーが日付範囲を指定するとき、レポートExcelファイルを準備し、ダウンロードポップアップでそれを表示する必要があります。Excelのioストリームを作成することはできますが、ajaxを使用してそのポップアップを開く方法がわかりません。

その場でファイルを生成し、ストリームを返します。したがって、ファイルパスを指定できません。ajax呼び出しで。のようなメッセージを表示したい"Please wait.."。ファイルの生成に時間がかかり、リンクが機能していないように見えるためです。

4

3 に答える 3

1

ファイルのダウンロードに Ajax は必要ありません。

リクエストは ajax リクエストでもかまいませんが、生成されたファイル パスを指定するだけで、ブラウザーがダウンロードを行います。

于 2013-03-12T12:02:15.750 に答える
1

通話を行う必要はありませんAJAX

を で構成byte[]されたStruts2のStream結果として返す必要があるだけですContentDisposition: attachment;(ContentDisposition: inlineデスクトップ アプリケーションでダウンロードまたは開くことを尋ねるのではなく、ブラウザ内で開こうとします)。

何かが起こっていること、リクエストが送信され、システムがフリーズしていないことをユーザーに通知するには、 Loading OVERLAY.

オーバーレイはページ上に配置される要素で、通常は部分的に透明な背景、「読み込み中...」というアニメーション画像、およびモーダル動作 (ページが変更されるまで閉じず、ダブルクリックなど、同じリクエストの二重投稿など)。

もちろん、添付ファイルを開いた場合、ページは変更されないため、ダウンロードの終了をインターセプトして自分でオーバーレイを閉じるか、ユーザーに閉じるボタンを提供する必要があります。

それを傍受するには、Struts2 Execute and Wait Interceptor.

カスタム オーバーレイを作成する場合は、ajaxload.info Generator.

車輪を再発明したくない場合は、 のような既存のオーバーレイを調べることができますjQuery TOOLS

于 2013-03-12T15:30:41.387 に答える
0

ajax の成功メソッドでは、ストリームを返さず、代わりにファイルをサーバーに保存し、正しいファイルを返すアクションへのアドレスを含むポップアップを開きます。ただし、一部のブラウザーではポップアップがブロックされる可能性があるため、サイト (ローカル ホストまたはその他の URL) でそれを許可する必要があります。

于 2013-03-12T12:04:11.543 に答える