我正在使用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>
一切都很完美。使用第二个模板的任何页面都按预期渲染了组件。
如果有人能告诉我第一个模板的错误,我将非常感激。
答案 0 :(得分:0)
我不相信可以在<p:layout>
中使用<ui:define>
。
您可以在<ui:insert>
内使用<p:layoutUnit>
:
<p:layout>
<p:layoutUnit position="center">
<ui:insert name="Center unit" />
</p:layoutUnit>
<p:layoutUnit position="right" collapsible="true">
<ui:insert name="Right unit" />
</p:layoutUnit>
</p:layout>