在Facelets中,ui:composition和ui:decorate有什么区别?

15
在Facelets中,ui:compositionui:decorate有什么区别?它们似乎都支持ui:define作为子标签。在何种情况下会使用每个标签?
2个回答

13

1
“Template-in-template” 是什么意思?您能否举个例子来展示 ui:decorate比ui:composition 更有优势的地方? - Geek
您可以将<ui:decorate>嵌套在另一个<ui:composition>甚至是<ui:decorate>中。但对于<ui:composition>来说,它会忽略/删除标签外的任何内容。给定的链接包含详细的实际示例。 - BalusC

1
根据文档所述:http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/ui/decorate.html,装饰器标签与组合标签是相同的,唯一的区别在于ui:decorate不会忽略标签外的所有内容,这在您想要制作页面区域或部分的模板时非常有用。
例如,当您想要创建应用程序的整体外观模板时,ui:composition非常有用。由于它删除了标签外的内容,因此模板属性确实定义了应用程序区域的通用外观。
使用装饰标签,由于标签外的内容未被删除,因此可以制作包含在内容区域内的模板。
一个例子可能是使用组合模板来定义标题、菜单、页脚和内容部分。
在内容部分,当您想创建一个表单时,可以使用装饰器标签,并使所有表单具有相同的外观(例如标题、组件区域和按钮区域)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接