在 中显示来自 DB 的 HTML导致 HTML 页面损坏
有没有办法设置 Firefox 和 Chrome 来使用 h:outputText 标记中的 escape=false 属性。当有一些 html 需要在浏览器中显示时,Firefox 和 Chrome 会正确显示解析后的字符串,但应用程序中的任何其他链接都会被冻结(??)。
来自 db 的示例 html:
<HEAD>
<BASE href="http://"><META content="text/html; charset=utf-8" http-equiv=Content-Type>
<LINK rel=stylesheet type=text/css href=""><META name=GENERATOR content="MSHTML 9.00.8112.16434">
</HEAD>
<BODY><FONT color=#000000 size=2 face="Segoe UI">läuft nicht</FONT></BODY>
页面上解析的 HTML:
läuft nicht
非常奇怪的是,在 IE 中一切正常(通常是相反的)。
我使用 primefaces 组件 (v2.2)、.xhtml、tomcat 7 和 JSF 2.0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这样,您最终会得到语法上无效 HTML:
这是不对的。只能有一个
和
。浏览器的行为未指定。您需要从该 HTML 中删除整个
和包装
,以便最终得到 仅
您需要更新数据库以删除不必要的 HTML,或使用 Jsoup 来解析此部分根据每个请求发出类似的内容如下所示:
或者,您也可以在 HTML
中显示它,而不是借助 servlet。例如,
与具体问题无关:
标签已被弃用。
You end up with syntactically invalid HTML this way:
This is not right. There can be only one
<head>
and<body>
. The browsers will behave unspecified. You need to remove the entire<head>
and the wrapping<body>
from that HTML so that you end up with onlyYou'd need to either update the DB to remove unnecessary HTML, or to use Jsoup to parse this piece out on a per-request basis something like as follows:
Alternatively, you could also display it inside a HTML
<iframe>
instead with help of a servlet. E.g.Unrelated to the concrete problem:
<font>
tag is deprecated since 1998.在我看来,您似乎正在尝试做一些 JSF 并不真正想做的事情。您不应尝试在网页中插入 HTML,而应该尝试在页面上已有链接并通过 AJAX 调用修改“呈现”属性。
It seems to me that you're trying to do something that JSF was not really meant to do. Rather than try to insert HTML in your web page, you ought to try having the links already on your page and modifying the "rendered" attribute through an AJAX call.