2011-04-04 58 views
1

我需要输出存储在数据库中的html文本。该文本由丰富的编辑器生成,因此包含格式不正确的html(非封闭标签,如<br>)。所以我有问题如何打印在页面上。JSF不输出非严格的html

如果我使用:

#{document.content} 

它输出转义的HTML文档,所有标签都显示在页面上(代码本身含有“& LT;”代替<)

可见解决方案 - 使用H:用的outputText逃逸=“FALSE:

<h:outputText value="#{document.content}" escape="false" /> 

但它打印的HTML只有等到它是良好的XML形成:文本被停止在第一个<br>标签上。看来,JSF解析document.content的内容,并在无法执行时停止。我真的不需要JSF来解析内容,只需输出!

下面的代码都于事无补:

<h:outputText value="lt![CDATA[#{document.content}]]gt" escape="false" /> 

回答

2

好了,这似乎是Chrome的错误。在我更改DOCTYPEhtml可传递它显示“实体'nbsp'未定义”错误并且未呈现内容。但在其他浏览器中,一切都呈现正常!即使我将DOCTYPE回滚到xhtml严格 - Firefox和Opera完美地显示了内容,并且没有注意到格式不正确的html!

并没有深入,但这是与Webkit - Chrome的引擎。

更新:使用< f:view contentType =“text/html”>这样在Chrome和Safari中就可以正常工作。

希望这会帮助其他人