<html lang="#{localeBean.language}"
...
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
В этом разделе приведены дополнительные сведения о компонентах примера Duke's Bookstore и о том, как они взаимодействуют.
Здесь рассматриваются следующие темы:
Сущность Book
, расположенная в пакете dukesbookstore.entity
, инкапсулирует данные книги, хранящиеся в Duke's Bookstore.
Сущность Book
определяет атрибуты, используемые в примере:
Идентификатор книги
Имя автора
Фамилия автора
Название
Цена
Есть ли книга в продаже
Год публикации
Описание книги
Количество копий в инвентаре
Сущность Book
также определяет простой именованный запрос findBooks
.
Два Enterprise-бина, расположенных в пакете dukesbookstore.ejb
, обеспечивают бизнес-логику для Duke's Bookstore.
BookRequestBean
— это сессионный компонент с состоянием, который содержит бизнес-методы для приложения. Методы создания, поиска и покупки книг, а также обновления инвентаря для книги. Чтобы получить книги, метод getBooks
вызывает именованный запрос findBooks
, определённый в сущности Book
.
ConfigBean
— это сессионный компонент-синглтон, используемый для создания книг в каталоге при первоначальном развёртывании приложения. Он вызывает метод createBook
, определённый в BookRequestBean
.
Приложение Duke's Bookstore использует Facelets и его шаблоны для отрисовки пользовательского интерфейса. Страницы Facelets взаимодействуют с набором Managed-бинов CDI, которые действуют как бины поддержки для свойств и методов пользовательского интерфейса. Главная страница также взаимодействует с кастомными компонентами приложения.
Приложение использует следующие страницы Facelets, которые находятся в каталоге tut-install/examples/case-studies/dukes-bookstore/src/main/webapp/
.
bookstoreTemplate.xhtml
: файл шаблона, который определяет заголовок, используемый на каждой странице, а также таблицу стилей, используемую всеми страницами. Шаблон также извлекает язык из настроек веб-браузера.
Использует Managed-бин LocaleBean
.
index.xhtml
: страница входа, на которой размещаются настраиваемые компоненты карты и области с использованием Managed-бинов, настроенных в файле faces-config.xml
, позволяет пользователю выбирать книгу и перейти на страницу bookstore.xhtml
.
bookstore.xhtml
: страница, позволяющая пользователю получить подробную информацию о выбранной книге, добавить книгу в корзину покупок и перейти на страницу bookcatalog.xhtml
.
Использует Managed-бин BookstoreBean
.
bookdetails.xhtml
: страница, которая отображает сведения о книге, выбранной на bookstore.xhtml
или других страницах, и позволяет пользователю добавить книгу в корзину и/или перейти на страницу bookcatalog.xhtml
.
Использует Managed-бин BookDetailsBean
.
bookcatalog.xhtml
: страница, которая отображает книги в каталоге и позволяет пользователю добавлять книги в корзину, просматривать сведения о любой книге, просматривать и очищать корзину или совершать покупки книг, находящихся в корзине.
Используются Managed-бины BookstoreBean
, CatalogBean
и ShoppingCart
.
bookshowcart.xhtml
: страница, которая отображает содержимое корзины и позволяет пользователю удалять и просматривать содержимое, очищать корзину, приобретать книги в корзине или вернуться в каталог.
Использует Managed-бины ShowCartBean
и ShoppingCart
.
bookcashier.xhtml
: страница, позволяющая пользователю приобретать книги, указывать способ доставки, подписываться на рассылку новостей или вступать в фан-клуб Duke при покупке выше определённой суммы.
Использует Managed-бины CashierBean
и ShoppingCart
.
bookreceipt.xhtml
: страница, которая подтверждает покупку пользователя и позволяет пользователю вернуться на страницу каталога, чтобы продолжить покупки.
Использует Managed-бин CashierBean
.
bookordererror.xhtml
: страница, отображаемая CashierBean
, если в книжном магазине не осталось ни одного экземпляра заказанной книги.
Приложение использует следующие Managed-бины, которые находятся в каталоге tut-install/examples/case-studies/dukes-bookstore/src/main/java/javaeetutorial/dukesbookstore/web/managedbeans/
.
AbstractBean
: содержит служебные методы, вызываемые другими Managed-бинами.
BookDetailsBean
: вспомогательный бин для страницы bookdetails.xhtml
. Определяет имя details
.
BookstoreBean
: вспомогательный бин для страницы bookstore.xhtml
. Определяет имя store
.
CashierBean
: вспомогательный бин для страниц bookcashier.xhtml
и bookreceipt.xhtml
.
CatalogBean
: вспомогательный бин для страницы bookcatalog.xhtml
. Определяет имя catalog
.
LocaleBean
: Managed-бин, который получает текущую локаль. Используется на каждой странице.
ShoppingCart
: вспомогательный бин, используемый страницами bookcashier.xhtml
, bookcatalog.xhtml
и bookshowcart.xhtml
. Определяет имя cart
.
ShoppingCartItem
: содержит методы, вызываемые ShoppingCart
, CatalogBean
и ShowCartBean
.
ShowCartBean
: вспомогательный бин для страницы bookshowcart.xhtml
. Определяет имя showcart
.
Настраиваемые компоненты карты и области для Duke's Bookstore вместе со связанными классами отрисовщика, слушателя и модели определены в следующих пакетах в tut-install/examples/case-studies/dukes-bookstore/src/main/java/javaeetutorial/dukesbookstore/
.
components
: содержит классы MapComponent
и AreaComponent
. Смотрите Создание классов кастомного компонента.
listeners
: содержит класс AreaSelectedEvent
, а также другие классы слушателей. Смотрите Обработка событий для кастомных компонентов.
model
: содержит класс ImageArea
. Смотрите Конфигурирование данных модели для получения дополнительной информации.
renderers
: содержит классы MapRenderer
и AreaRenderer
. Смотрите Делегирование отрисовки отрисовщику.
Каталог tut-install/examples/case-studies/dukes-bookstore/src/java/dukesbookstore/
также содержит кастомный конвертер и другие пользовательские слушатели, не привязанные специально к пользовательским компонентам.
converters
: содержит класс CreditCardConverter
. Смотрите Создание и использование кастомного конвертера.
listeners
: содержит классы LinkBookChangeListener
, MapBookChangeListener
и NameChanged
. Смотрите Реализация слушателя событий.
Строки, используемые в приложении Duke's Bookstore, инкапсулированы в bundle-ресурсы, что позволяет отображать локализованные строки в нескольких локалях. Файлы свойств, расположенные в каталоге tut-install/examples/case-studies/dukes-bookstore/src/main/java/javaeetutorial/dukesbookstore/web/messages/
, включают файл по умолчанию, содержащий английские строки и три дополнительных файла для других локалей. Файлы следующие:
Messages.properties
: файл по умолчанию, содержащий английские строки
Messages_de.properties
: файл, содержащий немецкие строки
Messages_es.properties
: файл, содержащий испанские строки
Messages_fr.properties
: файл, содержащий французские строки
Настройка языка в веб-браузере пользователя определяет, какой язык используется. Тег html
в bookstoreTemplate.xhtml
извлекает языковые настройки из свойства language
в LocaleBean
:
<html lang="#{localeBean.language}"
...
Для получения дополнительной информации о пакетах ресурсов см. главу 22 «Интернационализация и локализация веб-приложений».
Пакет ресурсов настраивается в файле faces-config.xml
следующим образом:
<application>
<resource-bundle>
<base-name>
javaeetutorial.dukesbookstore.web.messages.Messages
</base-name>
<var>bundle</var>
</resource-bundle>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>de</supported-locale>
<supported-locale>es</supported-locale>
<supported-locale>fr</supported-locale>
</locale-config>
</application>
Эта конфигурация означает, что на страницах Facelets сообщения извлекаются с использованием префикса bundle
с ключом, найденным в файле Messages_`locale
.properties`, как в следующем примере из страница index.xhtml
:
<h:outputText style="font-weight:bold"
value="#{bundle.ChooseBook}" />
В Messages.properties
ключевая строка определяется следующим образом:
ChooseBook=Choose a Book from our Catalog
В Duke's Bookstore используются следующие дескрипторы развёртывания:
src/main/resources/META-INF/persistence.xml
: файл конфигурации API персистентности Java
src/main/webapp/WEB-INF/bookstore.taglib.xml
: файл дескриптора библиотеки тегов для кастомных компонентов
src/main/webapp/WEB-INF/faces-config.xml
: файл конфигурации JavaServer Faces, в котором настраиваются Managed-бины для компонента карты, а также пакеты ресурсов для приложения
src/main/webapp/WEB-INF/web.xml
: файл конфигурации веб-приложения
Назад | Вперёд | Содержание |