“PWC3999:在提交响应后无法创建会话”

时间:2011-04-04 15:24:33

标签: xhtml jsf-2 facelets glassfish-3

我的应用程序的一个页面出现了这个奇怪的问题。它抛出了我在标题上提到的错误:

PWC3999: Cannot create a session after the response has been committed

我已经检查过有关此主题的其他帖子,但是我没有看到任何适用于这种情况的帖子,因为没有新的Servlet / Filter被添加到应用程序中,并且错误刚刚在javascript上进行了一些小的更改后才开始xhtml文件。 如果我删除任何行,则错误停止显示。 起初我认为它可能是缓冲区大小的一些问题并且增加了值(大10倍,只是为了确保),但这并没有解决问题。

而且,说实话,我不认为这与文件的大小有关,因为它曾经更大,而且没有任何问题。

我也检查过,并且在这种情况下找不到任何转发/重定向。

有人可以帮我这个吗?

亲切的问候,

Carlos Ferreira

编辑:GF v3.1出现此错误,但在GF v3.0.1上没有出现,这可能是facelets实现的错误吗?

3 个答案:

答案 0 :(得分:1)

您是在XHTML文件中编写JS代码吗?编辑的JS代码很可能包含XML语法错误,这导致XML解析异常,这反过来又迫使容器显示HTTP 500错误页面(最可能是需要创建会话的自定义错误页面),但是因为响应已经提交。这是我可以根据迄今为止给出的信息思考的最佳方案。在将来的问题中,请添加整个堆栈跟踪。它包含答案。

无论根本原因如何,您都需要将JS代码放在由<script src>包含的自己的JS文件中。 JS语言包含几个运算符,这些运算符是XML中的特殊字符,如&<等,您需要XML转义或CDATA包装。但这很难看。

答案 1 :(得分:1)

我遇到了同样的问题,当我添加一个没有id的额外按钮时,异常出现在日志中,但是当我将id添加到新按钮时,异常消失了。尝试将id放入产生错误的组件中。

答案 2 :(得分:0)

我必须自己处理这个错误,但是我注意到当我单独测试这个模块时,启动我的所有webapp项目然后尝试模块本身可以防止该错误。

也许你想尝试一下!