SPRING-SOURCE.RU

Основные объекты в JSF

JSF JavaServer Faces

Из чего JSF состоит?

  1. UI Component. Объект с состоянием, методами, событиями, который содержится на сервере и отвечает за взаимодействие с пользователем. По сути, это визуальный компонент. Он содержит какие-то методы, которые берут параметры от пользователя, обрабатывают их, содержит методы, которые вызывают нашу модель, реагирует на события, сам генерирует события. Самое главное, что каждый UI компонент содержит метод для прорисовки самого себя — метод render. Render прорисовывает себя согласно правилам. Какие правила могут быть? Правила задаются следующим классом — Renderer
  2. Renderer - Отвечает за отображение компонента и преобразование ввода пользователя. То есть когда срабатывает предыдущий метод render, он обращается к Renderer и говорит: «рисуй, вот тебе мои данные, рисуй». Генерироваться может не только html код, но и код для мобильных телефонов или wml, но чаще всего и проще используюется именно html. С каждым компонентом может быть связан, так называемый, Validator и не один, а может быть и несколько.
  3. Validator - Проверяет правильность введенного пользователем значения. Пользователь вводит значения, они попадают на сервер и первым их хватает Validator.
  4. Convertor - Преобразует свойства компонента в/из строки для отображения. Отвечает за преобразование поступивших данных в данные, которые понимает UI компонент. Также это правило работает и в обратную сторону.
  5. Backing bean - Специальный JavaBean (java класс), который собирает значения из компонент, реагирует на события, взаимодействует с бизнес-логикой. Связан с каждым компонентом. Их может быть несколько, он является необязательным для UI компонента, он просто его использует. Backing bean содержит поля, которые будут заполняться из компонента (занесет значения введенные пользователем). JSF компонент не будет работать с Java классами и с чем-то другим, кроме Backing bean. Backing bean является представителем нашей модели для JSF компонента. Backing bean будет реагировать насобытия. В компоненте происходит событие — нажали на кнопку, и вызывает нужный нам метод. Дальше.
  6. Events and Listeners - компоненты генерируют события, слушатели реагируют на них.
  7. Messages - сообщения, генерируемые любым объектом JSF и отображаемые пользователям . Это объект, который содержит в себе сообщение, которое будет выведено пользователю, либо не будет выведено. Для чего они? При работе компонента могут возникать такие ситуации: пользватель вводит дату, но ввел в неправильном формате и тут срабатывает Validator. Как Validator сообщить, что дата неправильная? Нужно создать объект класса Message и отправить его JSF, далее JSF собирает пачку этих Message и при выводе страницы может вывести эти сообщения. Почему может? Потому что есть специальные теги, которыми помечаются те места, где будут выводиться наши сообщения. Сообщения могут быть, как для всей страницы целиком, так и для только конкретных компонентов.
  8. Navigation - Схема навигации между страницами . Это правила навигации, которые определяют, как мы будем переходить между различными страницами. Правила задаются в виде xml документа.

Взаимодействие основных объектов JSF

JSF JavaServer Faces

Первое — у нас есть View. View это по сути дерево компонентов (это страница, которую мы хотим показать пользователю). Из чего состоит эта страница? Каждый View иммет свой уникальный идентификатор — имя страницы, с каждым View связано дерево его компонентов. UI component содержаться в виде иерархии: panel — кнопка итд. Далее, с каждым компонентом связан определнный Renderer. Он занимается тем, что он отображает наш компонент, он рисует страницу. То есть мы говорим View рисовать, он пробегает по всем своим компонентам и на каждом из них вызывает метод рисовать. С компонентом связан определенный Renderer и он берет на себя эту прорисовку, беря данные от нашего компонента.

С каждым Renderer связан Converter, который будет преобразовать значения компонентов. Также с каждым компонентом будет поставляться Validator, который будет проверять, а правильно ли воодятся значения пользователем.

Все компоненты и Renderer могут генерировать события (Events). Кто обрабатывает эти события? События обрабатываются EventListener — это классы реализующие какой-либо интерфейс, у него есть метод, который будет вызван при возникновении данного события. События происходят не только на сервере, но и со стороны клиента. Сам EventListener содержит Backing bean, а Backing bean связан с UI component. По сути, EventListener — это класс реализующий какой-то интерфейс и этим классом является Backing bean, он будет реализовывать эти интерфейсы соответственно внутри них будут методы, вызывающие эти события. Частным случаем EventListener является Action метод. Что это значит? С каждым визуальным компонентом связано какое-то действие, например, у кнопки — нажать. У edit box нет действия это пассивный элемент принимающий данные, там будут события, но не действия. То есть, методы, которые будут вызываться при нажатии на кнопку, например, будут называться Action методами. Каждый Action метод возвращает результат определенного типа — String. Строка является уникальным идентификатором системной навигации. По сути, строка, которую возвращает Action метод она передается в систему навигации. Система навигации, на основании строки, которую вернул Action метод, может решить, а что ей делать дальше?

Все компоненты возвращают какие-нибудь Message, то есть возвращают какой-то результат.