【问题标题】:getting error "getOutputStream() has already been called for this response"收到错误“getOutputStream() 已为此响应调用”
【发布时间】:2012-07-01 13:51:09
【问题描述】:

我正在显示一些事件的报告。我希望控制器显示弹出窗口以进行保存和打开。

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

现在我的问题是,

我收到错误“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: 我希望响应显示文件弹出窗口,并希望浏览器重定向到其他视图。

【问题讨论】:

  • IOUtils.copy(is, opStream); 必须尝试关闭您在操作后传递的响应的输出流。哪个抛出异常。
  • @杰瑞:有什么解决办法...?????
  • @Thihara:我试过“response.getOutputStream().close();”然后也显示相同的错误
  • 那是不可能的。 HTTP 不能那样工作。

标签: java jsp servlets spring-mvc download


【解决方案1】:

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

您在尝试在其他地方调用 HttpServletResponse.getWriter() 时抛出异常/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多