JSF 不输出非严格 html

发布于 2024-10-30 08:41:08 字数 613 浏览 2 评论 0原文

我需要输出存储在数据库中的html文本。文本由富编辑器生成,因此包含格式错误的 html(非闭合标签,如
)。所以我有如何将其打印在页面上的问题。

如果我使用:

#{document.content}

它打印转义的html文档,并且所有标签都显示在页面上(代码本身包含“& lt;”而不是<)

可见的解决方案-使用 h:outputText 和 escape="false:

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

但它只打印 html,直到它是良好的 xml 格式:文本在第一个
标记处停止 似乎,JSF 解析 document.content 的内容并在无法解析时停止。我真的不需要 JSF 来解析内容,只是输出

以下代码也没有帮助:

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

I need to output the html text, which is stored in database. The text is generated by the rich editor, so contains bad-formed html (non-closed tags like <br>). So I have the problem how to print it on the page.

If I use:

#{document.content}

It prints the escaped html document, and all tags are displayed on the page (the code itself contains "& lt;" instead of <)

The visible solution - to use h:outputText with escape="false:

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

But it prints the html only until it is well-xml-formed: the text is stopped on the first <br> tag. Seems, JSF parses the content of the document.content and stops when cannot do it. I don't really need JSF to parse the content, simply output!

The following code didn't help either:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

微暖i 2024-11-06 08:41:08

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

没有深入研究,但这在某种程度上与 Chrome 引擎 Webkit 相关。

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

希望这会帮助其他人

Ok, that seemed to be Chrome error. After I changed DOCTYPE to html transitive it showed "Entity ‘nbsp’ not defined" error and didn't render the content. But in other browsers everything rendered ok! Even after I rollbacked the DOCTYPE to xhtml strict - Firefox and Opera displayed the content perfectly and didn't pay much attention to bad-formed html!

Didn't dive deep, but this is somehow linked with Webkit - the engine for Chrome.

Update: use < f:view contentType="text/html" > so that this worked ok in Chrome and Safari.

Hope this will help anyone else

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文