Изучаем Java EE 7 - [167]

Шрифт
Интервал


Вы также можете настроить несколько параметров, касающихся JSF, внутри . Некоторые из них перечислены в табл. 11.1.


Таблица 11.1. Некоторые специфические для JSF параметры
ПараметрОписание
javax.faces.CONFIG_FILESОпределяет список разделенных запятой зависящих от контекста путей, по которым реализация JSF будет искать ресурсы
javax.faces.DEFAULT_SUFFIXПозволяет веб-приложению определить список альтернативных суффиксов для страниц, имеющих содержимое JSF (то есть с расширением. jsf)
javax.faces.FACELETS_BUFFER_SIZEРазмер буфера ответа. По умолчанию равно –1
javax.faces.FACELETS_REFRESH_PERIODКогда запрашивается страница, этот параметр будет использоваться как интервал, по истечении которого компилятор будет проверять наличие изменений. Значение –1 отключает эту проверку
javax.faces.FACELETS_SKIP_COMMENTSЕсли установлено значение true, среда выполнения гарантирует, что XML-комментарии на странице Facelets не будут доставлены клиенту
javax.faces.LIFECYCLE_IDИдентифицирует объект типа Lifecycle как использованный при обработке запросов JSF
javax.faces.STATE_SAVING_METHODОпределяет местоположение сохранения состояния. Корректными значениями являются server, которое задается по умолчанию (обычно сохраняется в HttpSession), и client (сохраняется в скрытом поле при последующей отправке формы)
javax.faces.PROJECT_STAGEОписывает, на каком этапе жизненного цикла находится это конкретное приложение JSF (Development, UnitTest, SystemTest или Production). Этот параметр может быть использован реализацией JSF для кэширования ресурсов, например, чтобы улучшить производительность на производстве
javax.faces.DISABLE_FACELET_JSF_VIEWHANDLERЗначение true отключает Facelets как стандартный язык объявления страниц (PDL)
javax.faces.WEBAPP_RESOURCES_DIRECTORYЕсли установлено значение этого параметра, среда выполнения JSF интерпретирует его как путь относительно корня веб-приложения, где должны располагаться ресурсы
javax.faces.LIBRARIESИнтерпретирует каждый файл, найденный в списке путей, разделенных двоеточием, как библиотеку тегов Facelets

FacesContext

JSF определяет абстрактный класс javax.faces.context.FacesContext для представления контекстной информации, связанной с обработкой входящих запросов и создания соответствующего ответа. Этот класс позволяет взаимодействовать с пользовательским интерфейсом и остальной частью среды JSF.

Чтобы получить к нему доступ, вы можете использовать на ваших страницах неявный объект FacesContext (см. главу 10 для обсуждения неявных объектов) или получить ссылку в ваш компонент-подложку с помощью статического метода getCurrentInstance(). Он вернет экземпляр класса FacesContext для текущего потока, а затем вы можете вызвать методы, перечисленные в табл. 11.2.


Таблица 11.2. Некоторые методы FacesContext
МетодОписание
AddMessageПрисоединяет сообщение (информационное, предупреждающее, сообщение об ошибке либо сообщение о фатальной ошибке)
GetApplicationВозвращает объект типа Application, связанный с этим веб-приложением
GetAttributesВозвращает объект типа Map, представляющий атрибуты, связанные с объектом типа FacesContext
getCurrentInstanceВозвращает объект типа FacesContext для запроса, который обрабатывается в текущем потоке
getELContextВозвращает объект типа ELContext для текущего объекта типа FacesContext
getMaximumSeverityВозвращает максимальную степень тяжести, записанную в любом FacesMessage, внесенном в очередь
GetMessagesВозвращает коллекцию объектов типа FacesMessage
getPartialViewContextВозвращает объект типа PartialViewContext для заданного запроса. Он используется для внедрения логики в цикл управления обработкой/отрисовкой (например, для обработки AJAX)
getViewRootВозвращает корневой компонент, связанный с запросом
releaseВысвобождает любые ресурсы, связанные с объектом типа FacesContext
renderResponseСигнализирует реализации JSF о том, что текущая фаза обрабатывающего запросы жизненного цикла была закончена, управление должно быть передано фазе «Отрисовать ответ», минуя любые фазы, которые еще не были выполнены
responseCompleteСигнализирует реализации JSF о том, что HTTP-ответ для этого запроса уже был сгенерирован (например, переадресация НТТР), а также о том, что жизненный цикл обработки запросов должен прекратить свою работу, как только завершится текущая фаза

Faces-config.xml

Класс FacesServlet является внутренним в реализациях JSF, и, хотя у вас нет доступа к его коду, вам требуются метаданные, чтобы настроить его или некоторые свойства в файле web.xml, как показано в листинге 11.1. К настоящему времени вы привыкли к двум возможным вариантам работы с метаданными в Java EE 7: аннотации и дескрипторам развертывания XML (/WEB-INF/faces-config.xml).

До появления JSF 2.0 единственный выход заключался в использовании XML, сегодня же компоненты-подложки, преобразователи, слушатели событий, отрисовщики и валидаторы могут иметь аннотации, поэтому использование XML-файлов для конфигурации стало необязательным. Даже большая часть навигации между страницами может быть организована с помощью либо XML, либо Java-кода. В листинге 11.2 показан фрагмент файла faces-config.xml. В этом примере определяется локаль по умолчанию (fr), набор сообщения для интернационализации, а также некоторые правила навигации. Скоро вы увидите, как можно наладить систему навигации и без помощи faces-config.xml.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.