p:layout 组件在模板客户端中使用时未呈现
我正在使用 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 中,我定义了一个
组件,如下所示:
<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 时,我看到“中心单元”和“右侧单元”,但没有看到任何布局呈现。
但是,当我尝试将
组件放入模板内时,如下所示:
<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>
一切正常。使用第二个模板的任何页面都会按预期呈现组件。
如果有人能告诉我第一个模板我做错了什么,我将非常感激。
I am using JSF 2.0 and PrimeFaces 2.2.1. In my template.xhtml, I have a ui:insert
component:
<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>
In myPage.xhtml which uses the above template, I defined a <p:layout>
component as following:
<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>
When I opened myPage.xhtml, I saw "Center unit" and "Right unit" but I didn't see any layout rendered.
However, when I tried to put the <p:layout>
component inside the template as following:
<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>
everything works perfectly. Any pages that use the 2nd template rendered the component as expected.
I'd be very grateful if someone could tell me what I have done wrong with the 1st template.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不认为可以在
中使用
。您可以在
中使用
但是:I don't believe that it is possible to use
<p:layout>
within<ui:define>
.You can use a
<ui:insert>
within a<p:layoutUnit>
however: