ui:composition和ui之间的区别:Facelets中的装饰

时间:2012-10-26 17:53:08

标签: java jsf java-ee jsf-2 facelets

Facelets中ui:compositionui:decorate之间有什么区别?两者似乎都支持ui:define作为子标记。在什么情况下你会使用这些?

2 个答案:

答案 0 :(得分:12)

忽略<ui:composition>标记之外的任何内容。 <ui:decorate>不是这样,因此作为“模板中的模板”很有用。

通过查看以下答案中的一些真实世界示例,可以更好地理解这有何意义:

答案 1 :(得分:1)

正如文档所说:http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/ui/decorate.html装饰器标签与组合相同,唯一的区别在于ui:decorate不会忽略标签之外的内容,这在你想要的时候很有用制作页面区域或部分的模板。

例如,当您想要创建应用程序的一般外观模板时,ui:composition非常有用。当它删除标记之外的内容时,模板属性确实定义了应用程序区域的一般外观。

使用decorate标签,由于标签外部的内容未被删除,您可以制作内容区域内部分的模板。

一个例子可以是使用组合模板来定义页眉,菜单,页脚和内容部分。

然后在内容部分中,您可以在创建表单时使用装饰器标记,然后使所有表单具有相同的外观(例如,标题,组件区域和按钮区域)。 / p>