将静态 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.htmlfooter.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 页面,

当我包含 jquery 时,为啥我的简单严格 XHTML 文件会出错?

文件无效或损坏无法在0x379处读取

MiniUI treeGrid 动态加载数据与静态加载数据的区别