响应已经为JSF2 Apache MyFaces提交了错误

时间:2014-04-14 08:33:27

标签: ajax jsf-2 myfaces

版本:

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

1 个答案:

答案 0 :(得分:2)

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

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

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