Различие между ui: состав и ui: украсить в Facelets

В чем разница между ui:composition и ui:decorate в Facelets? Оба, похоже, поддерживают ui:define как дочерние теги. В каких случаях вы бы использовали каждый из них?

Ответы

Ответ 1

Ничего, кроме внешнего тега <ui:composition>, не учитывается. Это неверно для <ui:decorate>, что выгодно как "шаблон в шаблоне".

Как это имеет смысл, может быть, лучше понять, посмотрев примеры реальных примеров в следующих ответах:

Ответ 2

Как говорится в документации: http://docs.oracle.com/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/pdldocs/facelets/ui/decorate.html теги декоратора совпадают с композицией, единственная разница в том, что ui: decorate do not игнорировать содержимое вне тега, которое может быть полезно, когда вы хотите создать шаблон области или раздела страницы.

Например, используйте композицию в качестве полезной, когда вы хотите создать шаблон общего вида приложения. Поскольку он удаляет содержимое за пределами тега, атрибут шаблона он действительно определяет общие области обзора вашего приложения.

С помощью тегов decorate, поскольку содержимое вне тега не удаляется, вы можете создавать шаблоны выделения, которые входят в область содержимого.

Примером может быть использование шаблонов композиции для определения разделов заголовка, меню, нижнего колонтитула и содержимого.

Затем внутри разделов содержимого вы можете использовать тег декоратора, когда хотите сделать форму, а затем сделать все ваши формы одинаковыми. (например, заголовок, область компонентов и область кнопок).