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

问题描述 投票:1回答:1

我正在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 download illegalstateexception
1个回答
3
投票

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

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

了responseComplete

public abstract void responseComplete()

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

See also:

© www.soinside.com 2019 - 2024. All rights reserved.