Facelets中ui:composition
和ui:decorate
之间有什么区别?两者似乎都支持ui:define
作为子标记。在什么情况下你会使用这些?
答案 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>