ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Java質問&情報提供サイトコミュのファイルダウンロード時にgetOutputStreamでエラー発生

  • mixiチェック
  • このエントリーをはてなブックマークに追加
またまたお世話になります。

サーバー内のテキストファイルを読み込み、ボタンクリック時にその内容をダウンロードさせるActionを作成しました。

ダウンロードは正常に行えるのですが、メソッドがfoward変数を返した後に

----------
org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream()はこのレスポンスに対して既に呼び出されています
----------

とエラーが出ます。
ソースは以下の通りでServletOutputStreamをクローズしているつもりなのですが、クローズの仕方が悪いのでしょうか。

==============
byte buffer[] = new byte[4096];
response.setHeader("Content-Disposition", "attachment; filename="
+ "sample.txt");
response.setContentType("text/plain");
// ファイル入力ストリームの取得
FileInputStream fileReader = new FileInputStream (inputFile);
ServletOutputStream out = response.getOutputStream();
int size;
while((size = fileReader.read(buffer))!= -1) {
out.write(buffer,0, size);
}
fileReader.close();
out.close();

fwd = FWD_OK;
return mapping.findForward(fwd);
==============
*実際はtry-catchで囲んでいます

調べたところ「getOutputStreamはいくつ起動しても良い」「ある種不可避だが実害はない」との記載を見かけましたが、解消する方法はあるのでしょうか。

コメント(5)

findForwardでJSPに遷移してエラーが出てんじゃないの?
レスポンスへの出力は完了してるんだから、return null;ってしてみ?
nullにしても問題ないんですね。やってみたら出なくなりました。ありがとうございました。
初めまして、とうとうです。
友達になりましょうか。私は中国人です。今は蕨に住んでいます。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Java質問&情報提供サイト 更新情報

Java質問&情報提供サイトのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。