看到这里。
何时以及为什么使用<h:head>
而不是<head>
?
不过,我已经看到Primefaces不适用于<head>
。
<h:head>
是一个JSF组件,它提供了一个钩子,以编程方式将JavaScript和CSS资源包含在生成的HTML <head>
中。PrimeFaces使用它来包含Ajax工作和花哨外观所需的JS/CSS代码。
作为测试,创建一个带有<h:head>
和PrimeFaces
组件的页面,在 Web 浏览器中打开该页面,然后通过右键单击 - 查看源代码检查生成的 HTML 源代码。您将看到添加了几个JSF和PrimeFaces特定的JS/CSS文件。现在将<h:head>
替换为<head>
并再次检查生成的HTML源代码,这次您将看不到任何内容。
<head>
标记是一个 HTML 标记,它定义了 HTML 页面的头部(这是您定义元数据或包含资源(例如 JavaScript 或 CSS 等资源)的地方)。<h:head>
是一个 JSF 标记(随 JSF 2.0 引入),用于处理页面的<head>
部分。拥有这样的 JSF 标记的好处是,这个头成为 JSF 组件树的一部分,因此,你可以在 Java 代码中操作它。
关于与Primefaces <head>
不兼容,我不明白为什么会发生这种情况。JSF 1.x中引入了Facelets混合HTML代码和JSF(XHTML)代码的功能,即使您使用Primefaces,在页面中插入HTML <head>
标签也不会有任何麻烦。Facelets与JSF 2.x原生集成。