错误渲染视图:java.lang.IllegalStateException:已为此响应调用了getOutputStream()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误渲染视图:java.lang.IllegalStateException:已为此响应调用了getOutputStream()相关的知识,希望对你有一定的参考价值。

我正在JSF和spring中创建一个项目,其主要目的是在浏览器中生成PDF文件。一切似乎都很好,pdf也生成了但是在控制台上我得到了这个例外。任何人都有这个想法吗?我搜索过并发现许多人都有这个问题,但我找不到任何解决方案。

 SEVERE: Error Rendering View[/WebPages/SearchPages/index.xhtml]
    java.lang.IllegalStateException: PWC3991: getOutputStream() has already been called for this response

我在创建输出流对象时遇到此错误

HTTPServletResponse response = (HTTPServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse();

ServletOutputStream out = response.getOutputStream();

我的创作或任何其他原因是否有任何问题?任何帮助都会非常明显

答案

您需要告诉JSF您自己已经完成了HTTP响应,否则在操作方法完成后,JSF仍将继续执行默认的RENDER_RESPONSE作业,这将导致此异常,因为响应已经提交。

你可以通过在action方法中调用FacesContext#responseComplete()来做到这一点。

了responseComplete

public abstract void responseComplete()

向JavaServer Faces实现发出信号,表明已生成此请求的HTTP响应(例如HTTP重定向),并且请求处理生命周期应在当前阶段完成后立即终止。

See also:

以上是关于错误渲染视图:java.lang.IllegalStateException:已为此响应调用了getOutputStream()的主要内容,如果未能解决你的问题,请参考以下文章

如何正确关闭 java-ee websocket 连接

渲染错误的视图

如何在渲染 ejs 视图 Node.js 时捕获错误

自定义标签渲染器在 Xamarin iOS 的滚动列表视图中显示错误的文本样式

UIImagePickerController 错误:对尚未渲染的视图进行快照会导致 iOS 7 中的快照为空

渲染基本的 HTML 视图?