好的,要将页面包含在另一个页面中,我需要<ui:include src="pageName"/>
标记。但是,如果我只想包含一部分页面?
让我解释一下:
我的模板包含标记<ui:insert name="body"/>
和其他<ui:insert.../>
标记。
List.xhtml页面使用此模板,当然,填充所有模板标签。现在,在另一个名为Create.xhtml(使用相同的模板)的页面中,在某一点上,我想只放置List.xhtml的body标签内容,而不是其他标签。有可能吗?
谢谢你的答案。
答案 0 :(得分:2)
最简单的方法可能是将List.xhtml的正文部分分解为自己的<ui:composition>
。然后,您可以在需要的页面中使用<ui:decorate>
重复使用它。这将是“模板”的方式。
另外,您可以在身体部分创建<ui:component>
。这将是实现这一目标的“组件”方式。两者都应达到相同的基本目标,但构图/装饰可能更简单。
UPDATE 示例(另请参阅here)。
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>
...
答案 1 :(得分:0)
另一种方式:
所引用:
......
<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>
希望可以帮助别人。