获取错误“getOutputStream()已被调用此响应”

时间:2012-06-30 05:49:41

标签: java jsp servlets spring-mvc download

我正在显示某些事件的报告。我希望控制器显示保存并打开的弹出窗口。

在设置响应之后,我已经设置了响应文件,我正在返回视图。

现在我的问题是,

我收到错误“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;

框架:

弹簧-MVC,休眠

例外:

java.lang.IllegalStateException:已为此响应调用了getOutputStream()

期望的O / P: 我希望响应show popup for file,并希望浏览器重定向到其他视图。

1 个答案:

答案 0 :(得分:1)

在请求处理期间,正在调用HttpServletResponse.getWriter()HttpServletResponse.getOutputStream()。根据规范,使用OutputStream和Writer都是非法的。

在尝试在其他地方调用HttpServletResponse.getWriter() /

时,您会遇到异常