![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| AndrewMormysh |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 8.2.2008 Репутация: нет Всего: 1 |
Поделитесь пожалуйста опытом создания кастомных компонентов на JSF 2.0.
Как известно jsf 2.0 rc вышел неделю назад - брожу по бескрайним просторам, но никак не могу найти хорошей статьи или какой-то документации по этому поводу. Есть буквально несколько бедных статеек без ссылок на источники: раз, два. Да и то материал годичной давности (не понимаю правда как такое могло получиться) (( В общем, есть ли кто нибудь с опытом в этой области? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Опыт есть небольшой |
|||
|
||||
| AndrewMormysh |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 8.2.2008 Репутация: нет Всего: 1 |
Желаем На код не скупись, и компонент и пример использования.. и дескрипторы все )) ну в общем чем больше информации тем лучше, а то как-то ее совсем мало везде ( За линк спасибо, буду читать. Это единственное на данный момент место где можно черпать знания по этой теме? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Я большего пока не находил. Есть еще офсайт, но там дока та же что и в JSR + несколько статеек. Пример постараюсь вечером накатать и выложить, ибо сейчас на работе времени свободного немного. |
|||
|
||||
| powerOn |
|
||||||||||||||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
В общем накатал небольшой пример компонента для простого отчета в виде таблицы. Мавен-проект со всеми исходниками прикреплен, его можно скачать и собрать из консоли или IDE командой:
Сейчас я опишу основные шаги по конфигурации JSF 2.0 проекта, но рассчитываю на то Вы уже знакомы с JSF как таковым, например писали что нибудь на JSF 1.2 и Facelet-ах, и, конечно же, понимаете что такое Maven и как с ним работать. Ну, поехали: 1) Создайте мавен проект с типом упаковки war. В pom файл необходимо добавить следующие зависимости:
Тут у нас последние снапшоты JSF 2.0 библиотек, а так же JSTL, которая им необходима. Наити эти зависимости можно в следующем репозитории:
2) Сконфигурируйте web.xml. Так же как и для JSF 1.2 для второй версии понадобится объявить Faces Servlet и ряд не совсем обязательных, но иногда полезных свойств:
3) Наш будущий компонент будет описан исключительно разметкой. Он будет отображать табличку с данными (что-то вроде отчета). Использоваться на странице он будет как обыкновенный тег, который связан через атрибут с данными для отчета. Для создания такого компонента нужно в папке webapp создать каталог с именем resources- JSF2 знает о нем, по умолчанию он будет искать компоненты там. Внутри каталога создать еще одну папку, например mycomponents - это имя произвольное, но его нужно запомнить, т.к. оно понадобится при подключении нашего тега к странице. Внутри папки mycomponents создадим файл с описанием тега, пусть это будет simpleReportTable.xhtml. Вот его содержание:
Как видно, это такой же XHTML файл который можно часто увидеть при работе с Facelet-ами, но имеется небольшая особенность: теги composite:interface, где делается объявление имени и атрибутов нашего компонента; и composite:implementation который содержит разметку - реализация компонента. Тег composite:interface в нашем случае содержит атрибуты name="simpleReportTable" и displayName="Simple Report Component". Это имя компонента и его описание. Внутри имеется тег <composite:attribute name="model" required="true" />, он объявляет что у компонента будет атрибут model, которая будет использоваться для доступа к данным необходимым для отчета. Внутри тега composite:implementation находится разметка для генерации таблицы. Доступ к атрибуту model осуществляется через конструкцию #{cc.attrs.model}, ну а свойствам модели аналогично через точку. Чтобы использовать такой компонент на странице нашего проекта необходимо его подключить как библиотеку тегов, объявив префикс тегов. На странице index.xhtml это выглядит следующим образом (5 строка):
В пятой строке (xmlns:mc="http://java.sun.com/jsf/composite/mycomponents") мы объявляем префикс mc (можно было назвать его как угодно), url же выглядит следующим образом: стандартная приставка http://java.sun.com/jsf/composite/ + Имя папки с компонентом (mycomponents). Сам компонент имеет имя simpleReportTable, как имя файла с его реализацией. Как видно из строки 7 он имеет атрибут связанный со свойством reportData бина ReportBean. 4) Код JSF бина и классов для отчета.
Что интересно, в JSF 2.0 теперь можно объявлять бины с помощью аннотаций, что лично для меня является серьезным облегчением в работе. Вспомогательные классы необходимые для отчета:
В целом остается только собрать проект, запустить на вашем любимом сервере и открыть страницу index.xhtml. Результат должен быть примерно таким: ![]() Вот собственно и все, простой компонет готов. Это сообщение отредактировал(а) powerOn - 26.8.2009, 07:45 Присоединённый файл ( Кол-во скачиваний: 21 )
myjsfcomp.zip 5,41 Kb |
||||||||||||||||||
|
|||||||||||||||||||
| AndrewMormysh |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 8.2.2008 Репутация: нет Всего: 1 |
powerOn, всё работает, это как раз то что надо, огромное спасибо. Разбираться буду позже - тогда и вопросы задам )
P.S. а в какой среде ты программируешь? У меня IDEA 8.1 - она JSF 2.0 не признаёт. (пока писал пост - увидел в твоей подписи ссылку на NetBeans - в ней? Там всё ОКс jsf2.0?) |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
NetBeans 6.8 M1 с горем пополам поддерживает JSF 2.0. По крайней мере подсказки для тегов есть. Думаю к релизу дела пойдут получше.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |