Изучаем Java EE 7 - [154]

Шрифт
Интервал

• Инъекции во все артефакты JSF — в JSF 2.1 относительно немногие артефакты JSF могли использовать внедрение. В JSF 2.2 внедрение можно применять везде (для преобразователей, валидаторов, компонентов и т. д.).

• Переход к CDI — JSF 2.0 привнес собственный механизм определения области действия и компоненты-подложки. Сегодня CDI стал заменой для старых компонентов-подложек JSF, а JSF 2.2 поддерживает области действия непосредственно для CDI (это означает, что весь пакет javax.faces.bean становится устаревшим и может быть удален из новых версий JSF).

В табл. 10.1 перечислены основные пакеты, определенные сегодня в JavaServer Faces 2.2.


Таблица 10.1. Основные пакеты JavaServer Faces
ПакетОписание
javax.facesОсновные API JavaServer Faces
javax.faces.applicationAPI, используемый для связи бизнес-логики приложения с JavaServer Faces
javax.faces.componentОсновные API для работы с компонентами пользовательского интерфейса
javax.faces.contextКлассы и интерфейсы, определяющие информацию о состоянии по запросу
javax.faces.convertКлассы и интерфейсы, определяющие преобразователи
javax.faces.eventИнтерфейсы, описывающие события и слушатели событий, а также конкретная реализация классов событий
javax.faces.flowКлассы и API среды выполнения для Faces Flow
javax.faces.lifecycleКлассы и интерфейсы, определяющие управление жизненным циклом для реализации JSF
javax.faces.renderКлассы и интерфейсы, определяющие модель отрисовки
javax.faces.validatorИнтерфейс, определяющий модель валидатора и конкретные реализации классов валидатора
javax.faces.webappКлассы, требуемые для интеграции JSF в веб-приложения, включая стандартные сервлеты Faces

Эталонные реализации

Mojarra, названный в честь рыбы, обитающей в Южной Америке и на Карибском побережье, является эталонной реализацией JSF 2.2 с открытым исходным кодом от компании Oracle. Mojarra доступен в GlassFish v4 и используется в следующем примере.

MyFaces — это проект Apache Software Foundation, который является организатором нескольких подпроектов, связанных с JavaServer Faces, в том числе MyFaces Core — реализацией среды выполнения JSF.

Создание JSF-страниц и компонентов

Создание страницы JSF отличается от написания HTML-страницы тем, что JSF является серверной технологией. Если вы напишете JSF-страницу и запустите ее прямо в браузере, то не увидите ожидаемое графическое представление. Страница JSF должна быть отрисована в HTML на сервере перед отправкой в браузер. Разработчик может объединить JSF-компоненты с HTML и CSS для задания необходимых стилей, если захочет, но все это будет отрисовано сервером.

Страницу JSF можно рассматривать как дерево компонентов, которое использует несколько библиотек тегов (как определенных спецификацией JSF, так и написанных самостоятельно или сторонними разработчиками). Тело страницы компилируется в дерево графических объектов Java, и их значения привязываются к компоненту-подложке. Таким образом, страница имеет богатый жизненный цикл, который обрабатывает много различных фаз.

Структура страницы JSF

Страница JSF — это практически файл XHTML, определяющий список библиотек тегов в заголовке. Ее тело содержит графическое представление. В качестве примера снова используем страницу, представляющую форму для создания новой книги (вернитесь к рис. 10.1). В листинге 10.7 показаны эти два фрагмента. Код xmlns: h="http://xmlns.jcp.org/jsf/html" импортирует библиотеку тегов, которая называется http://xmlns.jcp.org/jsf/html и задает ей псевдоним h. Затем этот псевдоним используется в теле страницы, когда нам необходимо отобразить определенный компонент, который принадлежит библиотеке тегов ( или ). В этом примере задействована только одна библиотека тегов, но вы можете иметь столько библиотек, сколько вам нужно.


Листинг 10.7. Страница JSF с использованием библиотеки тегов и компоненов

>

>·········"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


>

>······xmlns: h="http://xmlns.jcp.org/jsf/html">


>

>··Создать новую книгу

>

>

>··

Создать новую книгу

>··


>··

>····

>······

>······


>······

>······


>······

>······


>······

>······


>······

>······


>······

>······


>····

>····


>··

>··


>··


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.