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

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

Использование Ajax с Facelets

Как упоминалось в предыдущем разделе, JavaServer Faces поддерживает Ajax с помощью встроенной библиотеки JavaScript, входящей в состав базовых библиотек JavaServer Faces. Эта встроенная библиотека Ajax может использоваться в веб-приложениях JavaServer Faces одним из следующих способов.

  • Используя тег f:ajax вместе с другим стандартным компонентом в приложении Facelets. Этот метод добавляет функциональность Ajax к любому компоненту пользовательского интерфейса без дополнительного кодирования и настройки.

  • Используя метод JavaScript API jsf.ajax.request() непосредственно в приложении Facelets. Этот метод обеспечивает прямой доступ к методам Ajax и позволяет кастомизировать поведение компонентов.

  • Используя компонент <h:commandScript> для выполнения произвольных серверных методов из представления. Компонент генерирует функцию JavaScript с заданным именем, которая при вызове, в свою очередь, вызывает указанный серверный метод через Ajax.

Использование тега f:ajax

Тег f:ajax — это основной тег JavaServer Faces, который обеспечивает функциональность Ajax для любого обычного компонента пользовательского интерфейса при использовании вместе с этим компонентом. В следующем примере поведение Ajax добавляется к компоненту ввода путём включения основного тега f:ajax:

<h:inputText value="#{bean.message}">
    <f:ajax />
</h:inputText>

В этом примере, хотя Ajax включён, другие атрибуты тега f:ajax не определены. Если событие не определено, выполняется действие по умолчанию для компонента. Для компонента inputText, если не указан атрибут event, событием по умолчанию является valueChange. Таблица 13-1 перечисляет атрибуты тега f:ajax и их действия по умолчанию.

Таблица 13-1 Атрибуты тега f:ajax

Название

Тип

Описание

disabled

javax.el.ValueExpression, который интерпретируется как Boolean

Значение Boolean, которое идентифицирует статус тега. Значение true указывает, что поведение Ajax не должно выполняться. Значение false указывает, что поведение Ajax должно быть выполнено. По умолчанию false.

event

javax.el.ValueExpression, который интерпретируется как String

String, определяющий тип события, к которому будет применяться действие Ajax. Если указано, должно быть одним из событий, поддерживаемых компонентом. Если не указано иное, для компонента определяется событие по умолчанию (событие, инициирующее запрос Ajax). Событием по умолчанию является action для компонентов javax.faces.component.ActionSource и valueChange для компонентов javax.faces.component.EditableValueHolder.

execute

javax.el.ValueExpression, который интерпретируется как Object

Collection с идентификаторами компонентов, которые должны быть выполнены на сервере. Если указан литерал, это должен быть разделённый пробелами объект типа String идентификаторов компонентов и/или одно из ключевых слов. Если указано ValueExpression, оно должно ссылаться на свойство, которое возвращает объекты Collection объектов типа String. Если не указано, значением по умолчанию является @this.

immediate

javax.el.ValueExpression, который интерпретируется как Boolean

Значение Boolean, указывающее, нужно ли обрабатывать введённые данные в начале жизненного цикла. Если true, события поведения, сгенерированные из этого поведения, передаются в фазе применения значений запроса. В противном случае события будут выполняться в фазе вызова приложения.

listener

javax.el.MethodExpression

Имя метода слушателя, который вызывается, когда для слушателя была передана javax.faces.event.AjaxBehaviorEvent.

onevent

javax.el.ValueExpression, который интерпретируется как String

Имя функции JavaScript, которая обрабатывает события пользовательского интерфейса.

onerror

javax.el.ValueExpression, который интерпретируется как String

Имя функции JavaScript, которая обрабатывает ошибки.

render

javax.el.ValueExpression, который интерпретируется как Object

Collection, идентифицирующий список компонентов, которые будут отображаться на клиенте. Если указан литерал, это должен быть разделённый пробелами объект типа String идентификаторов компонентов и/или одно из ключевых слов. Если указано ValueExpression, оно должно ссылаться на свойство, которое возвращает объекты Collection объектов типа String. Если не указано, по умолчанию используется значение @none

Ключевые слова, перечисленные в таблице 13-2, могут использоваться с атрибутами execute и render тега f:ajax.

Таблица 13-2 Ключевые слова Execute и Render

Ключевое слово

Описание

@all

Все идентификаторы компонентов

@form

Форма, которая включает компонент

@none

Нет идентификаторов компонентов

@this

Элемент, который вызвал запрос

Обратите внимание, что когда вы используете тег f:ajax на странице Facelets, библиотека ресурсов JavaScript загружается неявно. Эта библиотека ресурсов также может быть загружена явно, как описано в Загрузка JavaScript как ресурса.


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