我有一个使用PrimeFaces创建的对话框,如下所示:
<h:body>
<ui:composition>
<h:form id="newResource">
<p:dialog
id="modalDialog"
header="Create a new Resource"
widgetVar="dlg2"
modal="true"
visible="true">
...
</p:dialog>
</h:form>
</ui:composition>
在我想要显示的页面中,我有以下鳕鱼。最后一行是我包含对话框的地方。
<h:body>
<p:growl id="growl" showDetail="true" sticky="true" />
<ui:composition template="/template/masterLayout.xhtml">
<ui:define name="windowTitle">
Resources
</ui:define>
<ui:define name="stack">
<p:stack
id="dvStackMenu"
expanded="true"
icon="/resources/images/stack/stack.png"
model="#{resourcePageController.stackMenuModel}"/>
</ui:define>
<ui:define name="content">
<h:form>
<p:dataTable
var="resc"
rowKey="#{resc.resourceId}"
selection="#{resourcePageController.selectedResources}"
value="#{resourcePageController.resources}"
selectionMode="multiple">
<p:column headerText="Name">
<h:outputText value="#{resc.name}" />
</p:column>
<p:column headerText="Created On">
<h:outputText value="#{resc.createdOn}" />
</p:column>
<p:ajax event="rowSelect"/>
<p:ajax event="rowUnselect" />
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
<ui:include src="/template/dialog/create/resource.xhtml" />
</h:body>
对话框的visible属性设置为true,因此预期的行为是页面加载时,应显示对话框。情况并非如此。
如果我在浏览器中导航到/template/dialog/create/resource.xhtml
,则会按预期显示对话框。
任何人都可以帮助我解决发生的事情吗?我不确定是否使用了ui:include或其他正在进行的事情。
答案 0 :(得分:3)
当<ui:composition>
的内容使用template
进行修饰时,<ui:composition>
以外的所有内容都会被忽略。
因此,您需要将您的包含放在<ui:define>
s。