Jsf 呈现视图时出错:java.lang.IllegalStateException:已为此响应调用getOutputStream()

Jsf 呈现视图时出错:java.lang.IllegalStateException:已为此响应调用getOutputStream(),jsf,download,illegalstateexception,Jsf,Download,Illegalstateexception,我正在用JSF和spring创建一个项目,其主要目的是在浏览器中生成PDF文件。一切似乎都很好,pdf也生成了,但在控制台上我得到了这个例外。有人知道这个吗?我搜索发现很多人都有这个问题,但我没有找到任何解决我的问题的方法 SEVERE: Error Rendering View[/WebPages/SearchPages/index.xhtml] java.lang.IllegalStateException: PWC3991: getOutputStream() has alrea

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

 SEVERE: Error Rendering View[/WebPages/SearchPages/index.xhtml]
    java.lang.IllegalStateException: PWC3991: getOutputStream() has already been called for this response
我在创建outputstream对象时遇到此错误

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

ServletOutputStream out = response.getOutputStream();

我的创作过程中有什么问题吗?还是其他原因?任何帮助都会非常可观

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

您可以通过调用action方法来实现这一点

响应完成
public abstract void responseComplete()

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

另见:

在哪里调用此PDF生成代码?我之所以这样问是因为之前的Spring进程或JSF呈现进程可能会在执行此代码之前获取OutputStream并将字节写入响应。