Композитные компоненты в JSF 2.0
Начиная с JSF 2.0, очень легко создать повторно используемый компонент, известный какcomposite components. В этом руководстве мы покажем вам, как создать простые составные компоненты (хранящиеся как «register.xhtml»), которые представляют собой форму регистрации пользователя, включающую поля имени и текста электронной почты (h:inputText) и кнопку отправки. (h:commandButton). Кроме того, мы также покажем вам, как его использовать.
Создать составные компоненты
Вот шаги для создания составных компонентов:
1. Составное пространство имен
Создайте файл.xhtml и объявите составное пространство имен.
2. Интерфейс и реализация
Использует составные тегиcomposite:interface,composite:attribute иcomposite:implementation, чтобы определить содержимое составного компонента. Например,
#{cc.attrs.anything}
Тегcomposite:interface используется для объявления настраиваемых значений, которые доступны разработчику, который его использует. А тегcomposite:implementation объявляет все разметки XHTML, которые являются содержимым составного компонента, внутри тегаcomposite:implementation вы можете получить доступ к атрибутуcomposite:interface с выражением#{cc.attrs.attributeName}.
3. Папка ресурсов
Поместите составные компоненты (файл «.xhtml») в папку ресурсов JSF, см. Рисунок 1:
Рисунок 1: Структура каталогов в этом примере.

В этом случае вы помещаете составные компоненты «register.xhtml» в папку с именем «example».
4. Полный пример
Готово, давайте посмотрим полный пример «register.xhtml».
Файл: register.xhtml
#{cc.attrs.nameLable} :
#{cc.attrs.emailLable} :
Используйте составные компоненты
Вы только что создали составной компонент «register.xhtml», и теперь мы покажем вам, как его использовать.
1. Путь доступа к составному компоненту
См. Рисунок 1 выше; файл «register.xhtml» находится в папке «example». Вот как вы получаете к нему доступ:
http://java.sun.com/jsf/composite/folder-name-in-resources-folder
Имя папки составных компонентов определяется путем доступа к компоненту, например, если вы поместите файл «register.xhtml» в папку с именем «abc», тогда вы должны получить к нему доступ как этот :
2. Полный пример
Давайте посмотрим на полный пример, демонстрирующий использование составных компонентов «register.xhtml».
Файл: default.xhtml
Composite Components in JSF 2.0
Вам разрешается передавать либо жестко запрограммированное значение, либо метод поддержки или свойство в составной компонент через открытые атрибуты, когда форма отправляется, JSF автоматически выполняет всю привязку базового компонента.
P.S Here’s the “user” managed or backing bean, for those who are interested.
package com.example;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name="user")
@SessionScoped
public class UserBean{
public String name;
public String email;
//getter and setter methods for name and email
public String registerAction(){
return "result";
}
}
Скачать исходный код
Скачать -JSF-2-Composite-Components-Example.zip (11 КБ)
