
- •Обозначения и сокращения
- •введение
- •1. Установка и настройка инструментальных средств
- •1.1. Установка и подготовка к работе операционной системы
- •1.2. Установка программного обеспечения
- •1.3. Создание таблиц в базе данных
- •2. Основы Java EE 6
- •2.1. Распределенные многоуровневые приложения
- •2.2. Контейнеры Java EE
- •2.3. Сервер GlassFish v3
- •2.4. Структура приложения
- •2.5. Конфигурирование приложений
- •2.6. Задание ссылок на ресурсы
- •4. Введение в компоненты Facelets
- •4.1. Веб-страницы
- •4.2. Разработка простого приложения Facelets
- •4.3. Использование шаблонов
- •5. Унифицированный язык записи выражений
- •6.1. Добавление компонент библиотеки HTML на страницу
- •6.2. Использование компонент для таблиц баз данных
- •6.3. Использование тегов библиотеки Core
- •7. Использование конвертеров, слушателей и проверок
- •7.1. Использование стандартных преобразователей
- •7.2. Регистрация слушателей для компонентов
- •8. Внешние объекты (JavaBeans)
- •8.1. Создание класса внешних объектов
- •8.2. Описание свойств бинов
- •8.3. Написание методов внешних бинов
- •8.4. Проверка бинами
- •9.1. Файл конфигурации ресурсов приложения
- •9.2. Упорядочение ресурсов конфигурации приложения
- •9.3. Конфигурирование состояния проекта
- •9.4. Выбор конфигурации бина
- •9.5. Регистрация сообщений об ошибках как пакет ресурса
- •9.7. Конфигурирование правил навигации (Navigation Rules)
- •9.8. Основные требования приложения JavaServer Faces
- •10. Технология Java Servlet
- •11. Введение в Java Persistence API
- •11.1. Требования к классам сущностей
- •11.3. Внедряемые классы в сущностях
- •11.4. Наследование сущностей
- •11.5. Стратегии наследования сущностей с отображением
- •11.6. Управление сущностями
- •11.7. Запросы сущностей
- •12. Примеры хранимых сущностей
- •12.1. Приложение order
- •12.2. Пример получения схемы отношений на основе таблиц БД
- •13.1. Терминология языка запросов
- •13.3. Упрощенный синтаксис языка запросов
- •13.4. Примеры запросов
- •13.5. Запросы с навигацией связанных сущностей
- •13.6. Запросы с другими условными выражениями
- •13.7. Изменение и удаление группы сущностей
- •13.8. Полный синтаксис языка запросов
- •14. Язык запросов Criteria API
- •14.3. Корни запроса
- •14.4. Использование объединения в запросе
- •14.5. Навигация путей в запросах
- •14.6. Ограничения на результаты запроса
- •14.7. Управление результатами запросов
- •14.8. Исполнение запросов
- •15. Связывание ресурсов
- •15.1. Ресурсы и служба имен JNDI
- •15.2. Объекты DataSource и пулы соединений (Connection Pools)
- •15.3. Внедрение ресурсов
- •15.4. Адаптеры ресурсов
- •15.5. Аннотации метаданных
- •16. Безопасность веб-приложений
- •16.1. Краткий обзор
- •16.2. Механизмы обеспечения безопасности
- •16.3. Безопасность сервера предприятия
- •16.4. Использование защищенного соединения SSL
- •18. Пример приложения
- •18.1. Создание проекта веб-приложения
- •18.3.Структура приложения JavaEE 6
- •18.4. Программирование вида для объектов
- •18.5. Дизайн главной страницы
- •18.6. Страница просмотра записей таблицы городов
- •18.7. Страница добавления записей о городах
- •18.8. Страница редактирования записей о городах
- •18.9. Страница удаления записей о городах
- •19. Обработка связей внешних ключей
- •19.1. Разработка класса для вида сущности
- •19.2. Доработка вида для городов
- •19.3. Разработка обзорной страницы
- •19.5. Страница для редактирования записей с внешними ключами
- •20. Дополнительные функции
- •20.1. Сортировка записей таблицы
- •20.2. Контроль за удалением связанных записей
- •20.3. Контроль ввода наименований
- •20.4. Запросы к БД на языке Java Persistence Query Language
- •20.5. Управление страницами при просмотре таблицы
- •20.6. Создание и просмотр отчетов
- •20.7. Использование шаблонов и стилей
- •20.8. Защита приложения паролем
- •Заключение
- •Библиографический список
Атрибут value задаёт имя свойства внешнего объекта, куда или откуда будут поступать данные.
Атрибут binding позволяет задать ссылку на свойство внешнего объекта, который
содержит все необходимые атрибуты компонента. Это позволяет устанавливать атрибу-
ты компонентов программно в период исполнения приложения, например, для верифи-
кации и преобразования поступивших данных.
6.2.Использование компонент для таблиц баз данных
Компонент dataTable используется для отображения на странице клиента со-
держимого таблиц БД в табличном формате. Тег циклически просматривает список.
Атрибут value="#{имяView.allOfИмя}" определяет список объектов, отображаемых в таблице. Атрибут var="item" задаёт имя местной переменной, которая будет ссылаться
на очередной просматриваемый объект из списка. Например:
<h:dataTable value="#{citiesView.allOfCities}" var="item">
. . . . . . . . . . . .
</h:dataTable>
Вложенные в dataTable теги column определяют состав колонок таблицы, например:
<h:column>
<f:facet name="header"> <h:outputText value="IdCity"/>
</f:facet>
<h:outputText value="#{item.idCity}"/> </h:column>
Заголовки колонок определяются тегом <f:facet name=”header”>, содержимое колонки — тегом <h:outputText value=”#{item.idCity}”/>. Атрибут name тега facet опре-
деляет расположение фасета в таблице: название колонки (header), подвала таблицы (footer) и заголовка таблицы (caption). Например, следующий фрагмент задаёт итого-
вую строку таблицы для выдачи значения #{cart.total}:
<h:column>
. . . . .
</h:column>
<f:facet name="footer" <h:panelGroup>
<h:outputText value="Total}"/> <h:outputText value="#{cart.total}" />
<f:convertNumber type="currency" /> </h:outputText>
</h:panelGroup>
</f:facet>
Тег h:column позволяет управлять стилями заголовков и подвалов при помощи атрибутов headerClass и footerClass. Эти атрибуты воспринимают список классов сти-
лей CSS, применяемый к клеткам заголовка и подвала отображаемой таблицы.
Тег f:facet может иметь только один вложенный потомок, поэтому для группы тегов используется компонент h:panelGroup.
62
Атрибут value тега h:dataTable задаёт данные для отображения в таблице на странице клиента. Он может быть одним из следующих типов:
•list of beans,
•array of beans,
•javax.faces.model.DataModel,
•java.sql.ResultSet,
•javax.servlet.jsp.jstl.sql.ResultSet,
•javax.sql.RowSet.
Все источники данных для компонент Data имеют создаваемую автоматически
или вручную оболочку DataModel. Компонент Data позволяет отображать не весь на-
бор данных, а только его часть, задаваемую атрибутами first и rows, определяющими начальный номер строки и их количество.
Тег h:dataTable может иметь набор необязательных атрибутов для управления
стилями:
•captionClass — стиль заголовка таблицы;
•columnClasses — стиль всех колонок;
•footerClass — стиль подвала;
•headerClass — стиль заголовка колонок;
•rowClasses — стиль строк таблицы;
•styleClass — стиль для всей таблицы.
Каждый из этих атрибутов может иметь список стилей. Для атрибутов columnClasses или rowClasses элементы списка используются по очереди в порядке следования.
6.3.Использование тегов библиотеки Core
Теги библиотеки Core используются для выполнения действий, которых нет в библиотеке HTML. Многие теги используются как вложенные в родительский блочный тег. В табл. 6.2 приведены сведения о тегах библиотеки Core.
|
|
Таблица 6.2 |
|
Теги библиотеки Core |
|
|
|
|
Категория тега |
Тег |
Функции |
Обработка |
f:actionListener |
Добавить слушателя actionListener |
событий |
|
в родительский компонент |
|
f:phaseListener |
Добавить слушателя phaseListener |
|
|
на страницу |
|
f:setPropertyActionListener |
Регистрация специального слушателя |
|
|
для пересылки данного в бин |
|
|
при отправке данных с формы |
|
f:valueChangeListener |
Добавить слушателя изменения данных |
|
|
в родительском компоненте |
63
|
|
Окончание табл. 6.2 |
|
|
|
Категория тега |
Тег |
Функции |
Атрибуты |
f:attribute |
Добавить атрибут конфигурации |
конфигурирования |
|
родительскому компоненту |
Преобразование |
f:converter |
Добавить конвертер |
данных |
|
родительскому компоненту |
|
f:convertDateTime |
Добавить конвертер дат и времен |
|
|
родительскому компоненту |
|
f:convertNumber |
Добавить конвертер для чисел |
|
|
родительскому компоненту |
Фасеты |
f:facet |
Добавить вложенный компонент |
|
|
в тег со специальной связью |
|
f:metadata |
Регистрировать фасет |
|
|
для родительского компонента |
Локализация |
f:loadBundle |
Задние ResourceBundle |
|
|
для отображения строк |
Подстановка |
f:param |
Подстановка параметров в тег |
параметров |
|
MessageFormat и добавление |
|
|
пары «ключ – значение» в URL |
Представление |
f:selectItem |
Один элемент списка в компонентах |
элементов списка |
|
SelectOne или SelectMany |
|
f:selectItems |
Набор элементов списка в компонентах |
|
|
SelectOne или SelectMany |
Проверки |
f:validateDoubleRange |
Добавить проверку диапазона чисел |
|
|
|
|
f:validateLength |
Добавить проверку длины данных |
|
|
Adds a LengthValidator to a component |
|
f:validateLongRange |
Добавить проверку диапазона длин |
|
|
|
|
f:validator |
Добавить пользовательскую проверку |
|
|
|
|
f:validateRegEx |
Добавить проверку регулярным |
|
|
выражением |
|
f:validateBean |
Поручить проверку |
|
|
локальному экземпляру бина |
|
f:validateRequired |
Потребовать наличие |
|
|
значения в компоненте |
Ajax |
f:ajax |
Связать операции Ajax |
|
|
с одним или группой компонент |
События |
f:event |
Разрешить установку компоненту |
|
|
ComponentSystemEventListener |
64