- - PR -
ファイルのダウンロードとリロードを同時に行う
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-01 11:52
はじめまして。いつも参考にさせて頂いてます。
現在、サーブレット、JSPを使用した、Javaのオープン系の開発を行っています。 その中で、PrintWriterオブジェクトを使用したCSVファイルのダウンロード(データはDBより取得してサーブレットで編集)と、画面のリロードを同時に行いたいと考えています。 DBにCSV出力済みのフラグがあり、CSV出力のタイミングでUPDATEするのですが、 この項目が画面に表示されているためです。 何かよい案はあるでしょうか? よろしくお願い致します。 | ||||
|
投稿日時: 2005-03-01 15:01
ダウンロード -> 画面表示は無理だと思いますが、逆ならJavascriptなりMETAタグを
使えばできそうに思います。 | ||||
|
投稿日時: 2005-03-01 15:57
uk様、ありがとうございます。
やはり一度のリクエストで、ダウンロードと画面のリロードはできないようですね。 よく考えてみると、ダウンロードダイアログでキャンセルした場合もCSV出力済みフラグを更新してしまっています。 珍しい処理では無いように感じるのですが、これといった解決策は無いのでしょうか? 実現したい仕様は以下のようなものです。 1.ダウンロードダイアログで保存した場合のみ、DBのCSV出力済みフラグを更新する。 2.DBのCSV出力済みフラグを更新した場合、画面を再表示する。 よろしくお願い致します。 | ||||
|
投稿日時: 2005-03-01 16:11
ブラウザがダイアログを出している時点でサーバ側の処理は終わっていますので無理ですね。 それがまずいのであれば、リッチクライアントを使うなどの解決策を考える必要があるでしょう。 | ||||
|
投稿日時: 2005-03-01 16:29
やはりそうですか…。
リッチクライアント、仕様も含めて、再検討してみることにします。 uk様、ありがとうございました。 | ||||
|
投稿日時: 2005-03-01 20:49
仕様の再検討が必要だと思いますが、
例えば、 1)ダウンロードの指示をクライアントが行う (サブミットボタン等) 2)データベースを更新しながら、サーバ側(httpでアクセス可能な場所)にCSVを生成する。 3)画面を表示する CSVの生成以外はよくある画面遷移ですが、(3)の画面生成時に、 (2)で生成したCSVのURLに対して、windowのonloadイベントで 勝手にアクセスするようなJavaScriptを付けてやれば、 画面更新後にダウンロードが可能です。 サーバ側に生成したCSVを後からでもダウンロードできる機能を 別で用意してあげれば、ダウンロードのキャンセルや失敗・再取得も可能ですし、 CSVの生成は1回でOKだと思いますし、本来の要件も満たすことが可能ではないでしょうか。 | ||||
|
投稿日時: 2005-03-02 11:08
かつのり様、ありがとうございます。
なるほど!と思いました。考えつかなかったです。 サーバ側でCSV編集したデータを持っていればよいのですね。 要件 1.ダウンロードダイアログで保存した場合のみ、DBのCSV出力済みフラグを更新する。 に関しては、無理ということで調整できました。 おそらく、ダウンロード画面を作成するとか、リッチクライアントを使うとかしないと無理ですよね。 大変勉強になりました。ありがとうございました。 |
1