Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Ссылка на метод Managed-бина

Тег компонента имеет набор атрибутов для ссылки на методы Managed-бина, которые могут выполнять определённые функции для компонента, связанного с тегом. Эти атрибуты приведены в таблице 11-7.

Таблица 11-7 Атрибуты тегов компонентов, которые ссылаются на методы Managed-бина

Атрибут

Функция

action

Указывает на метод Managed-бина, который выполняет обработку навигации для компонента и возвращает результат типа String

actionListener

Указывает на метод Managed-бина, который обрабатывает события действия

validator

Указывает на метод Managed-бина, который выполняет проверку значения компонента

valueChangeListener

Указывает на метод Managed-бина, который обрабатывает события изменения значения

Только компоненты, реализующие ActionSource, могут использовать атрибуты action и actionListener. Только компоненты, реализующие EditableValueHolder, могут использовать атрибуты validator или valueChangeListener.

Тег компонента ссылается на метод Managed-бина, использующий выражение метода в качестве значения одного из атрибутов. Метод, на который ссылается атрибут, должен следовать определённой сигнатуре, которая указана определением атрибута тега в документации библиотеки тегов JavaServer Faces Facelets. Например, определение атрибута validator тега inputText следующее:

void validate(javax.faces.context.FacesContext,
              javax.faces.component.UIComponent, java.lang.Object)

В следующих разделах приведены примеры использования атрибутов.

Ссылка на метод, который выполняет навигацию

Если ваша страница содержит компонент, такой как кнопка или ссылка, который инициирует переход на другую страницу при активации компонента, то тег, соответствующий этому компоненту, должен содержать атрибут action. Этот атрибут выполняет одно из следующих действий:

  • Определяет результат типа String, который сообщает приложению, к какой странице перейти дальше

  • Ссылается на метод Managed-бина, который выполняет некоторую обработку и возвращает результат типа String

В следующем примере показано, как ссылаться на метод навигации:

<h:commandButton value="#{bundle.Submit}"
                 action="#{cashierBean.submit}" />

Смотрите Пишем метод для обработки навигации для получения информации о том, как написать такой метод.

Ссылка на метод-обработчик действия

Если компонент на вашей странице генерирует событие действия и если это событие обрабатывается методом Managed-бина, вы обращаетесь к этому методу с помощью атрибута actionListener компонента.

В следующем примере показано, как можно ссылаться на такой метод:

<h:commandLink id="Duke" action="bookstore"
               actionListener="#{actionBean.chooseBookFromLink}">

Атрибут actionListener этого тега компонента ссылается на метод chooseBookFromLink, используя выражение метода. Метод chooseBookFromLink обрабатывает событие, когда пользователь кликает ссылку, созданную этим компонентом. Смотрите Пишем метод-обработчик действия для получения информации о том, как написать такой метод.

Ссылка на метод, который выполняет валидацию

Если вход одного из компонентов на вашей странице проверен методом Managed-бина, обратитесь к методу из тега компонента с помощью атрибута validator.

В следующем упрощённом примере из примера CDI guessnumber-cdi показано, как ссылаться на метод, который выполняет проверку на inputGuess, компоненте ввода:

<h:inputText id="inputGuess"
    value="#{userNumberBean.userNumber}"
    required="true" size="3"
    disabled="#{userNumberBean.number eq userNumberBean.userNumber ...}"
    validator="#{userNumberBean.validateNumberRange}">
</h:inputText>

Метод Managed-бина validateNumberRange проверяет, что входное значение находится в допустимом диапазоне, который изменяется каждый раз, когда делается другое предположение. Смотрите Пишем метод для выполнения валидации для получения информации о том, как написать такой метод.

Ссылка на метод-обработчик изменения значения

Если вы хотите, чтобы компонент на вашей странице генерировал событие изменения значения, и вы хотите, чтобы это событие обрабатывалось методом Managed-бина вместо реализации ValueChangeListener, вы обращаетесь к методу с помощью атрибута компонента valueChangeListener:

<h:inputText id="name"
             size="30"
             value="#{cashierBean.name}"
             required="true"
             valueChangeListener="#{cashierBean.processValueChange}" />
</h:inputText>

Атрибут valueChangeListener этого тега компонента ссылается на метод processValueChange бина CashierBean с помощью выражения метода. Метод processValueChange обрабатывает событие, когда пользователь вводит имя в поле ввода, отображаемое этим компонентом.

Пишем метод-обработчик изменения значения описывает, как реализовать метод, который обрабатывает ValueChangeEvent.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)