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();

我的创作过程中是否有任何问题或其他原因?任何帮助都将不胜感激

4

1 回答 1

3

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

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

响应完成

public abstract void responseComplete()

通知 JavaServer Faces 实现,该请求的 HTTP 响应已经生成(例如 HTTP 重定向),并且请求处理生命周期应在当前阶段完成后立即终止。

也可以看看:

于 2012-09-19T12:43:51.610 回答