Как настроить h: head при использовании шаблона ui: composition?
Я использую 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".
Я ничего не нашел для этого. Есть ли способ добавить тег в заголовок, когда я в этой ситуации?
Спасибо!
Ответы
Ответ 1
<h:outputStylesheet>
всегда автоматически перемещается в <h:head>
, поэтому вам не нужно беспокоиться об этом. Для <h:outputScript>
, который по умолчанию отображается в той же строке, где и был объявлен, вы можете просто установить атрибут target
на head
, таким образом он автоматически будет перемещен в <h:head>
.
<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>
См. также: