错误渲染视图: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()的主要内容,如果未能解决你的问题,请参考以下文章
自定义标签渲染器在 Xamarin iOS 的滚动列表视图中显示错误的文本样式