<?xml version="1.0" encoding='UTF-8'?>
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
JavaServer Faces обеспечивает переносимый формат конфигурации (в виде документа XML) для настройки ресурсов приложения. Один или несколько документов XML, называемых файлами конфигурации приложения, могут использовать этот формат для регистрации и настройки объектов и ресурсов, а также для определения правил навигации для приложений. Файл конфигурации приложения обычно называется faces-config.xml
.
Файл конфигурации приложения необходим в следующих случаях:
Чтобы указать элементы конфигурации для вашего приложения, которые недоступны через аннотации Managed-бина, такие как локализованные сообщения и правила навигации
Чтобы переопределить аннотации Managed-бина при развёртывании приложения
Файл конфигурации приложения должен быть действителен для схемы XML, расположенной по ссылке http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd
.
Кроме того, каждый файл должен содержать следующую информацию в следующем порядке:
Номер версии XML, обычно с атрибутом encoding
:
<?xml version="1.0" encoding='UTF-8'?>
Тег faces-config
, содержащий все другие объявления:
<faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
...
</faces-config>
Вы можете иметь более одного файла конфигурации для приложения. JavaServer Faces находит файл/файлы конфигурации следующим образом.
Ресурс с именем /META-INF/faces-config.xml
в любом из файлов JAR в каталоге /WEB-INF/lib/
веб-приложения и в загрузчиках родительских классов , Если ресурс с таким именем существует, он загружается как ресурс конфигурации. Этот метод полезен для упакованной библиотеки, содержащей некоторые компоненты и отрисовщики. Кроме того, любой файл с именем, оканчивающимся на faces-config.xml
, также считается ресурсом конфигурации и загружается как таковой.
Параметр инициализации контекста, javax.faces.application.CONFIG_FILES
, в файле дескриптора развёртывания, который указывает один или несколько путей (разделённых запятыми) нескольких файлов конфигурации для вашего веб-приложения. Этот метод чаще всего используется для приложений масштаба предприятия, которые делегируют отдельным группам ответственность за ведение файла для каждой части большого приложения.
Ресурс с именем faces-config.xml
в каталоге /WEB-INF/
вашего приложения. Таким образом простые веб-приложения делают свои файлы конфигурации доступными.
Чтобы получить доступ к ресурсам, зарегистрированным в приложении, разработчик приложения может использовать объект класса javax.faces.application.Application
, который автоматически создаётся для каждого приложения. Объект Application
действует как централизованная фабрика для ресурсов, определённых в файле XML.
Когда приложение запускается, JavaServer Faces создаёт один объект класса Application
и настраивает его в соответствии с информацией из файла конфигурации приложения.
Компоненты, управляемые JavaServer Faces (либо указанные в файле faces-config.xml
, либо аннотированные javax.faces.bean.ManagedBean
), создаются отложенно (lazy). То есть, они создаются при выполнении запроса из приложения.
Чтобы объект компонента в области видимости приложения создавался и помещался в область приложения сразу после запуска приложения и до выполнения любого запроса, атрибут eager
Managed-бина должен быть установлен в true
, как показано в следующих примерах.
Объявление файла faces-config.xml
выглядит следующим образом:
<managed-bean eager="true">
Аннотация выглядит следующим образом:
@ManagedBean(eager=true)
@ApplicationScoped
Поскольку JavaServer Faces позволяет иметь несколько файлов конфигурации приложения, хранящихся в разных местах, в определённых ситуациях может быть важен порядок их загрузки (например, при использовании объектов уровня приложения). Этот порядок может быть определён через элемент ordering
и его подэлементы в самом файле конфигурации приложения. Порядок файлов конфигурации приложения может быть абсолютным или относительным.
Абсолютный порядок определяется элементом absolute-ordering
в файле. При абсолютном упорядочении пользователь указывает порядок, в котором будут загружаться файлы конфигурации приложения. В следующем примере показана запись для абсолютного упорядочения.
Файл my-faces-config.xml
содержит следующие элементы:
<faces-config>
<name>myJSF</name>
<absolute-ordering>
<name>A</name>
<name>B</name>
<name>C</name>
</absolute-ordering>
</faces-config>
В этом примере A, B и C являются различными файлами конфигурации приложения и должны быть загружены в указанном порядке.
Если в файле есть элемент absolute-ordering
, обрабатываются только файлы, перечисленные подэлементом name
. Для обработки любых других файлов конфигурации приложения требуется подэлемент others
. В отсутствие подэлемента others
все неперечисленные файлы будут игнорироваться во время загрузки.
Относительный порядок определяется элементом ordering
и его подэлементами before
и after
. При относительном упорядочении порядок загрузки файлов конфигурации приложения вычисляется с учётом порядка записей из разных файлов. В следующем примере показаны некоторые из этих соображений. В следующем примере config-A
, config-B
и config-C
— это разные файлы конфигурации приложения.
Файл config-A
содержит следующие элементы:
<faces-config>
<name>config-A</name>
<ordering>
<before>
<name>config-B</name>
</before>
</ordering>
</faces-config>
Файл config-B
(здесь не показан) не содержит элементов ordering
.
Файл config-C
содержит следующие элементы:
<faces-config>
<name>config-C</name>
<ordering>
<after>
<name>config-B</name>
</after>
</ordering>
</faces-config>
Благодаря записи подэлемента before
файл config-A
будет загружен перед файлом config-B
. Благодаря записи подэлемента after
файл config-C
будет загружен после файла config-B
.
Кроме того, подэлемент others
также может быть вложен в подэлементы before
и after
. Если присутствует элемент others
, указанный файл может получить наивысшее или наименьшее предпочтение как среди перечисленных, так и незарегистрированных файлов конфигурации.
Если элемент ordering
отсутствует в файле конфигурации приложения, этот файл будет загружен после всех файлов, содержащих элементы ordering
.
Назад | Вперёд | Содержание |