有没有办法设置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äuftnicht
非常奇怪的是,在IE中一切正常(通常是相反的)。
我使用primefaces组件(v2.2),. xhtml,tomcat 7和JSF 2.0
答案 0 :(得分:6)
您最终会以语法invalid HTML结束:
<html>
<head></head>
<body>
<head></head>
<body>...</body>
</body>
</html>
这是不对的。只能有一个<head>
和<body>
。浏览器的行为未指定。您需要从该HTML中删除整个 <head>
和包装<body>
,以便最终只使用
<FONT color=#000000 size=2 face="Segoe UI">läuft nicht</FONT>
您需要更新数据库以删除不必要的HTML,或者使用Jsoup按照请求解析此部分,如下所示:
String bodyContent = Jsoup.parse(htmlFromDB).body().html();
// ...
或者,您也可以在servlet的帮助下将其显示在HTML <iframe>
中。 E.g。
<iframe src="htmlFromDBServlet?id=123"></iframe>
无关具体问题:
<font>
标记已弃用。答案 1 :(得分:1)
在我看来,你正在尝试做一些JSF并不真正想做的事情。您不应尝试在网页中插入HTML,而应尝试在页面上显示链接并通过AJAX调用修改“呈现”属性。