我正在显示某些事件的报告。我希望 Controller 显示用于保存和打开的弹出窗口。
我已经在响应中设置了文件,设置响应后我将返回 View 。
现在我的问题是,
我收到错误“java.lang.IllegalStateException:已为此响应调用 getOutputStream()”
在我的 Controller 类中,我编写了以下代码:
......一些代码......
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、Hibernate
异常(exception):
java.lang.IllegalStateException:已为此响应调用 getOutputStream()
所需的 O/P : 我希望响应显示文件的弹出窗口,并希望浏览器重定向到其他 View 。
最佳答案
在请求处理期间,将调用 HttpServletResponse.getWriter()
和 HttpServletResponse.getOutputStream()
。根据规范,同时使用 OutputStream 和 Writer 是非法的。
您遇到的异常是在尝试在其他地方调用 HttpServletResponse.getWriter()
时抛出的/
关于java - 出现错误 "getOutputStream() has already been called for this response",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11271816/