好的,要在另一个页面中包含一个页面,我需要<ui:include src="pageName"/>
标记。但是如果我只想包含页面的一部分呢?
让我解释一下:我有一个模板,有标签<ui:insert name="body"/>
和其他<ui:insert.../>
标签。一个页面,List.xhtml,使用这个模板,当然,填充所有的模板标签。现在,在另一个名为Create.xhtml的页面(使用相同的模板)中,在某一点上,我想只放置List.xhtml的主体标记内容,而不是其他标记。这可能吗?
谢谢你的回答。
最简单的方法可能是将List.xhtml的body部分拆分为自己的<ui:composition>
。然后,您可以在需要它的页面中与<ui:decorate>
一起重用它。这将是"模板"的做法。
或者,您可以在body部分之外创建<ui:component>
。这将是实现它的"组件"方式。两者都应该达到相同的基本目标,但构图/装饰可能更简单。
更新示例(参见此处)。
commonBody.xhtml
...
<ui:composition>
<p>This is some common body.</p>
<p><ui:insert name="dynamicBody" /></p>
</ui:composition>
List.xhtml
...
<body>
<h1>This is the List.xhtml</h1>
<ui:decorate template="commonBody.xhtml">
<ui:define name="dynamicBody">Body of List.xhtml</ui:define>
</ui:decorate>
</body>
...
将输出类似
的内容...
<body>
<h1>This is the List.xhtml</h1>
<p>This is some common body.</p>
<p>Body of List.xhtml</p>
</body>
...
另一种说法:
template.xhtml:
......
<ui:insert name="body"/>
......
List.xhtml:
<ui:composition xmlns=....... template="/template.xhtml">
..............
<ui:define name="body">
<ui:include src="ListContent.xhtml"/>
</ui:define>
..............
</ui:composition>
ListContent.xhtml
<ui:component xmlns....>
Content I can reuse in other pages different by List.xhtml
(without see List.xhtml entire content, which is the scope of this question),
simply writing "<ui:include src="ListContent.xhtml"/>" in the target page code.
</ui:component>
希望能帮到别人。