<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: файл конфигурации веб-приложения
| Назад | Вперёд | Содержание |
Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)