Я использую JSF 2.0 и PrimeFaces 2.2.1. В моем template.xhtml у меня есть ui:insert
компонент:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>A page</title>
</h:head>
<h:body>
<ui:insert name="content"></ui:insert>
</h:body>
</html>
В myPage.xhtml, который использует вышеупомянутый шаблон, я определил компонент <p:layout>
следующим образом:
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
template="./../template/template.xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core">
<ui:define name="content">
<p:layout>
<p:layoutUnit position="center">
Center unit
</p:layoutUnit>
<p:layoutUnit position="right" collapsible="true">
Right unit
</p:layoutUnit>
</p:layout>
</ui:define>
</ui:composition>
Когда я открыл myPage.xhtml, я увидел «Центральный блок» и «Правильный блок», но не увидел ни одного макета.
Однако, когда я попытался поместить компонент <p:layout>
в шаблон, как показано ниже:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>A page</title>
</h:head>
<h:body>
<p:layout>
<p:layoutUnit position="center">
<ui:insert name="center"></ui:insert>
</p:layoutUnit>
<p:layoutUnit position="right" collapsible="true">
<ui:insert name="right"></ui:insert>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
все работает отлично. Любые страницы, которые используют 2-й шаблон, визуализировали компонент, как и ожидалось.
Буду очень признателен, если кто-нибудь скажет мне, что я сделал неправильно с первым шаблоном.