Java Chrome给定错误“;文件末尾的额外内容“;添加另一个<;h:列>;

Java Chrome给定错误“;文件末尾的额外内容“;添加另一个<;h:列>;,java,jsf,jsf-2,Java,Jsf,Jsf 2,我有以下JSF表: 列表 列表 身份证件 #{item.id} 名称 #{item.name} 以下部分: 导致第9列第361行出现“错误:文档末尾的额外内容”错误显示在表格上方的Chrome中。同时,服务器日志中会显示一个异常:“无法生成Facelets错误页面,因为响应已经提交” 为什么额外的会导致此错误 更新:当有两个以上的组件(例如三个h:link组件)时,似乎会抛出错误。我知道只有在出现呈现异常时才会发生这种情况,但Facelets将响应更改为完整的HTTP 500错误页面已经

我有以下JSF表:


列表
列表
身份证件
#{item.id}
名称
#{item.name}
以下部分:


导致第9列第361行出现
“错误:文档末尾的额外内容”
错误显示在表格上方的Chrome中。同时,服务器日志中会显示一个异常:“无法生成Facelets错误页面,因为响应已经提交”

为什么额外的
会导致此错误


更新:当有两个以上的组件(例如三个
h:link
组件)时,似乎会抛出错误。

我知道只有在出现呈现异常时才会发生这种情况,但Facelets将响应更改为完整的HTTP 500错误页面已经太晚了。现在已经太迟了,因为响应的一部分已经提交,这是一个无法返回的点。这解释了“由于响应已提交,无法生成Facelets错误页”错误

当生成的HTML/XML格式不正确时,Chrome显然会显示“文档末尾的额外内容”。事实上,Facelets由于该异常而突然停止呈现HTML


要解决此问题,您应该在服务器日志中查找导致Facelets停止呈现HTML的real异常。

将此添加到xhtml中:

f:视图


然后在表单末尾关闭它,或者只是添加它并在body标记之前/之后关闭它。

我没有答案,但这个问题已经知道,您可能想尝试他们的测试用例和/或其他注释。仅供参考,我很快将您的示例复制到本地Facelet,只在顶部添加了htlm->h:body->h:form,但是没有看到Chrome11/OSX/JBoss上的错误为6。也许你应该发布完整的Facelet和一些额外的细节,比如你在JIRA issue BalusC上使用的服务器?顺便说一句,当你用Safari或Firefox打开同一页面时会发生什么?谢谢你的评论。我现在把整个脸都贴上了。我在Glassfish 3.1上运行它。如果我在Firefox中打开同一个页面,它会显示fine.GF 3.1和默认的捆绑Mojarra?信息日志中打印的Mojarra版本是什么?你在选项>关于中看到了什么Chrome版本?你用的是什么操作系统?谢谢你的努力。事实上,server.log中的stacktrace与Jira问题中发布的stacktrace非常相似。日志中没有其他异常,除了
PWC3999:在提交响应后无法创建会话
,因此,如果您有任何关于我如何找到根本原因的提示,那就太好了。啊,是的,您得到的异常与1880版中相同。如果异常所说的是真的,我会以某种方式确保在提交响应之前创建会话。例如,在过滤器中的
chain.doFilter(req,res)
之前调用
request.getSession()
。尝试一下,即使只是为了测试。谢谢你的提示,我实际上调用了
FacesContext.getCurrentInstance().getExternalContext().getSession(true)@PostConstruct
方法中,这解决了这个问题。但我不确定这是不是一个好的解决方案。这是实现中的错误还是?这肯定是实现中的错误。一旦它知道某个状态需要在某个点保存,它应该在渲染之前很久就创建了会话。然而,我从未亲眼见过它,但我并没有真正深入地使用2.1.0。在2.0.5之后,我们直接转到了2.1.1。OP使用的是Facelets,而不是JSP。因此,
不是强制性的。