我正在使用JSF来呈现HTML页面。我像这样设计页面:
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="language" content="fr" />
<title><ui:insert name="title">My app</ui:insert></title>
</h:head>
<h:body>
<div id="top">
<ui:include src="/header.xhtml"/>
</div>
<h:panelGroup id="center" layout="block" >
<ui:insert name="center"/>
</h:panelGroup>
<div id="bottom">
<ui:include src="/footer.xhtml"/>
</div>
</h:body>
此模板有一些“客户端”页面,如下所示:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
template="/layouts/master.xhtml">
<ui:define name="center">
<ui:define name="title"><h:outputText value="#{myBean.description}"/></ui:define>
<ui:include src="#{myBean.url}"/>
</ui:define>
在客户端中,我必须在标题中添加元信息。如果我们有像outputScript或outputStylesheet这样的标签,可以在文档中的任何地方设置并在html“head”标签中呈现,那就太棒了。
我没有发现任何事情。当我处于这种情况时,有没有办法在标题中添加标记? 谢谢!
答案 0 :(得分:21)
<h:outputStylesheet>
始终会自动重定位到<h:head>
,因此您无需担心这一点。对于<h:outputScript>
,默认情况下,它与声明的位置在同一行,您只需将target
属性设置为head
,这样它就会自动重定位到<h:head>
{1}}也是。
<ui:define name="center">
<h:outputStylesheet name="css/style.css" />
<h:outputScript name="js/script.js" target="head" />
...
</ui:define>
对于其他HTML头部元信息,出于某种原因,只要有必要,您就可以声明另一个<ui:insert>
。
<h:head>
<ui:insert name="htmlhead" />
</h:head>
您可以使用如下
<ui:define name="htmlhead">
<meta ... />
</ui:define>