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

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

Настройка правил навигации

Навигация между различными страницами приложения JavaServer Faces, например выбор следующей страницы, которая будет отображаться после клика кнопки или ссылки, определяется набором правил. Правила навигации могут быть неявными, либо они могут быть явно определены в файле конфигурации приложения. Для получения дополнительной информации о неявных правилах навигации см. Модель навигации.

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

После того, как правило навигации выбрано, выбор той страницы, к которой следует перейти с текущей страницы, зависит от двух факторов:

  • Метод действия, вызываемый при клике компонента

  • Результат, на который ссылается тег компонента или который возвращается из метода действия

Результатом может быть всё, что выберет разработчик, но таблица 16-3 перечисляет некоторые результаты, обычно используемые в веб-приложениях.

Таблица 16-3 Строки общего результата

Результат

Что это означает

success

Всё работает как надо. Перейти на следующую страницу.

failure

Что-то не так. Перейти на страницу с ошибкой.

login

Сначала пользователь должен войти в систему. Перейти на страницу входа.

no results

Поиск не дал результатов. Снова перейти на страницу поиска.

Обычно метод действия выполняет некоторую обработку данных формы текущей страницы. Например, метод может проверить, соответствуют ли имя пользователя и пароль, введённые на форме, имени пользователя и паролю в файле. Если они совпадают, метод возвращает результат success. В противном случае он возвращает результат failure. Как показывает этот пример, и метод, используемый для обработки действия, и возвращаемый результат необходимы для определения подходящей страницы для перехода.

Вот правило навигации, которое можно использовать с только что описанным примером:

<navigation-rule>
    <from-view-id>/login.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{LoginForm.login}</from-action>
        <from-outcome>success</from-outcome>
        <to-view-id>/storefront.xhtml</to-view-id>
    </navigation-case>
    <navigation-case>
        <from-action>#{LoginForm.logon}</from-action>
        <from-outcome>failure</from-outcome>
        <to-view-id>/logon.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

Это правило навигации определяет возможные способы навигации из login.xhtml. Каждый элемент navigation-case определяет один возможный путь навигации из login.xhtml. Первый navigation-case говорит, что если LoginForm.login вернёт результат success, то будет выполнен переход на storefront.xhtml. Второй navigation-case говорит, что login.xhtml будет перерисован, если LoginForm.login вернёт failure.

Конфигурация Flow страниц приложения состоит из набора правил навигации. Каждое правило определяется элементом navigation-rule в файле faces-config.xml.

Каждый элемент navigation-rule соответствует одному идентификатору дерева компонентов, определённому необязательным элементом from-view-id. Это означает, что каждое правило определяет все возможные способы перехода с одной конкретной страницы в приложении. Если элемент from-view-id отсутствует, правила навигации, определённые в элементе navigation-rule, применяются ко всем страницам приложения. Элемент from-view-id также позволяет использовать шаблоны подстановочных знаков. Например, этот элемент from-view-id говорит, что правило навигации применяется ко всем страницам в каталоге books:

<from-view-id>/books/*</from-view-id>

Элемент navigation-rule может содержать ноль или более элементов navigation-case. Элемент navigation-case определяет набор критериев соответствия. Когда эти критерии будут выполнены, приложение перейдёт на страницу, определённую элементом to-view-id, содержащимся в том же элементе navigation-case.

Критерии навигации определяются необязательными элементами from-result и from-action. Элемент from-result определяет строковый результат, такой как success. Элемент from-action использует выражение метода для ссылки на метод действия, который возвращает String, что является результатом. Метод выполняет некоторую логику обработки и возвращает результат.

Элементы navigation-case проверяются по результату и выражению метода в следующем порядке.

  1. Случаи, указывающие как значение from-result, так и значение from-action. Оба эти элемента могут использоваться, если метод действия возвращает разные результаты в зависимости от результата обработки, которую он выполняет.

  2. Случаи, указывающие только значение from-result. Элемент from-result должен соответствовать либо результату, определённому атрибутом action компонента javax.faces.component.UICommand, либо возвращаемому результату с помощью метода, указанного компонентом UICommand.

  3. Случаи, указывающие только значение from-action. Это значение должно соответствовать выражению action, указанному в теге компонента.

При совпадении любого из этих случаев для визуализации будет выбрано дерево компонентов, определённое элементом to-view-id.


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