【问题标题】:Response Already Commited Error for JSF2 Apache MyFacesJSF2 Apache MyFaces 的响应已提交错误
【发布时间】:2014-04-14 08:33:26
【问题描述】:

版本:

Apache MyFaces 2.1.14 和 RichFaces 4.3.5

问题:

我们正在从 jsf 1.2 迁移到 jsf 2。我们面临着非常奇怪的问题:

当执行任何 ajax 操作时,我们会遇到错误并且页面没有刷新(或像往常一样重新渲染)

org.apache.myfaces.context.servlet.ServletExternalContextImpl setResponseContentType
SEVERE: Cannot set content type. Response already committed

这个问题和jsf 2.0 response already commented (ajax)很相似, 但似乎没有人回答这个问题。 它也只出现在特定页面,其他地方的相同代码工作正常,这个错误本质上是非常随机的?

这与 apache myfaces 有什么关系? 如果有任何可用的输入,请提供帮助。

导致这些问题的 xhtml ajax 标签是:a4j:commandLinka4j:ajax

【问题讨论】:

  • 您可以显示任何堆栈跟踪吗?通常,您的代码中应该有另一个错误(在 ajax 调用期间),

标签: ajax jsf-2 myfaces


【解决方案1】:

这通常是因为渲染响应阶段出现错误并且部分响应已经发送到客户端。该算法然后尝试呈现错误页面,但它不能,因为响应已经发送,所以你得到了问题。

解决方案通常是避免提前提交,增加响应的缓冲区大小。为此,请使用 javax.faces.FACELETS_BUFFER_SIZE Web 配置参数(默认为 1024 字节)。

理论上这个参数对内存有负面影响,因为缓冲区越大,分配的内存就越多,但是如果有足够的内存,JVM 就足够快了。

【讨论】:

  • 谢谢 lu4242,我会尝试上面建议的选项,并让您知道结果。
  • 正确答案。从现在开始显示所有错误消息。
猜你喜欢
  • 2012-08-25
  • 2015-11-15
  • 2021-08-09
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多