将静态 HTML(无效 XHTML)文件包含到 JSF Facelets
Posted
技术标签:
【中文标题】将静态 HTML(无效 XHTML)文件包含到 JSF Facelets【英文标题】:Include static HTML (invalid XHTML) file to JSF Facelets 【发布时间】:2012-08-04 06:11:29 【问题描述】:我有以下问题,我们在远程主机上运行 Web 内容管理器 (WCM),
它负责生成页眉和页脚 html 文件。
即header.html
、footer.html
。
HTML 文件的语法格式不正确,
WCM 生成的文件有
-
空格字符 (
 
) ????在 XHTML 中是不允许的。
非闭合断线 (<br>
) 标记 ????它在 XHTML 中无效。
因此 WCM 生成的 HTML 页面可能不是有效的 XHTML 页面。
我们正在 JSF 中实现我们的一些应用程序, 我们需要在其中包含 WCM 生成的页眉和页脚文件。 我们可以将非格式化的 HTML 文件包含到我们的 XHTML 文件中吗?
commonTemplate.xhtml
<html>
<head>
..........;
</head>
<body>
<ui:include src="remote_host/header.html" />
<ui:insert name="commonBodyContent" />
<ui:include src="remote_host/footer.html" />
</body>
</html>
【问题讨论】:
可能重复:***.com/questions/7028728/… 【参考方案1】:我猜和这个问题有关:Include non-Facelet content in a Facelet template
我不建议将 XHTML 与 HTML 混合使用,但很可能浏览器不会对提到的字符有任何问题,因此您可以尝试直接渲染文件内容,例如由
<h:outputText value="#yourBean.headerCode" escape="false" />
而YourBean.getHeaderCode() 会读出头文件的内容并将其作为字符串返回。 YourBean 应该是 ApplicationScoped。
让 WCM 生成有效的 XHTML 会更快更好。
【讨论】:
哦,我需要将 headerCode 读取到字符串变量中吗? , 但是我们的 WCM 会每 4 小时生成一次页眉和页脚内容,我不能简单地包含远程 html 文件吗? 它必须是有效的 XHTML,否则无法构建组件。使用提供的解决方案,JSF 不会为标题的每个 HTML 元素创建一个 UIComponent,而只会为 outputText 标记创建一个 UIComponent(实际上,如果您缓存结果,这可能会使您的整个请求更快)。在您的应用程序范围 bean 中,您可能会在每次缓存结果时设置一个时间戳,并在 4 小时后重置缓存。另外,您可以替换此代码中的无效字符,以便在呈现的输出中拥有纯 XHTML。 这太棒了。我试图找到解决方案。谢谢以上是关于将静态 HTML(无效 XHTML)文件包含到 JSF Facelets的主要内容,如果未能解决你的问题,请参考以下文章
如何读取和更改使用 html 或 xhtml 中的图像标签包含的 svg 文件中的元素? [复制]
JSF/Primefaces 如何将另一个域中的 .xhtml 包含到您的 .xhtml 中
如何包含多个 xhtml 页面,这些页面将相同的模板扩展为摘要 xhtml 页面,