1

いくつかのイベントに関するレポートを表示しています。コントローラーに保存および開くためのポップアップを表示させたいです。

私はすでにファイルを応答に設定しています。応答を設定した後、私はビューを返しています。

今、私の質問は、

「 java.lang.IllegalStateException: getOutputStream() は、この応答に対して既に呼び出されています」というエラーが表示されます

私のコントローラークラスでは、次のコードを書きました:

......いくつかのコード.......

InputStream is =
        new FileInputStream(new File("c:/reports/test_jasper.pdf"));
            response.setHeader("Content-Disposition","attachment;filename=\"test_jasper.pdf\"");
            OutputStream opStream = response.getOutputStream();
            IOUtils.copy(is, opStream);
            response.flushBuffer();
            HttpServletResponse response1 = new HttpServletResponse();

        
        
        model.addAttribute(ABC, new abc());

        model.addAttribute(DEF, new def());
        return SOME_VIEW;

フレームワーク:

Spring-MVC、休止状態

例外 :

java.lang.IllegalStateException: getOutputStream() は、この応答に対して既に呼び出されています

望ましい O/P : file のポップアップを表示する応答が必要で、ブラウザが他のビューにリダイレクトするようにします。

4

1 に答える 1

1

リクエストの処理中に、HttpServletResponse.getWriter() と の両方HttpServletResponse.getOutputStream() が呼び出されます。また、仕様によると、OutputStream と Writer の両方を使用することは違法です。

取得している例外は、別の場所で呼び出しを試みているときにスローされていHttpServletResponse.getWriter()ます/

于 2012-06-30T11:44:34.483 に答える