Поддержка JSF 2.0 в среде IDE NetBeans

В·среду IDE NetBeans включено большое число функций, которые обеспечивают встроенную поддержку для JavaServer Faces 2.0. Новая поддержка JSF 2.0 в среде IDE основана на предыдущей поддержке для JavaServer Faces и включает в себя универсальные расширения редактора для страниц Facelets, различные ресурсы для работы с классами сущностей и набор мастеров JSF для общих задач разработки, например, для создания управляемых компонентов JSF, шаблонов Facelets и составных компонентов.
В следующих разделах описаны предоставляемые функции JSF 2.0 при работе в среде IDE NetBeans. Для тестирования новых функций JSF загрузите пакет Java среды IDE NetBeans, который включает в себя технологии Java Web и EE. Пакет загрузки также содержит GlassFish Server Open Source Edition, пример реализации спецификации платформы Java EE 6 (JSR 316).
Содержание
Поддержка JSF 2.0 для проектов
Поддержка JSF для проектов разделена на категории следующим образом.
- Файлы шаблонов Facelets включены в проект.
- Библиотеки JSF 2.0 добавлены в путь к классам проекта.
- Сервлет Faces и отображение сервлета добавлены в дескриптор развертывания проекта.
При использовании сервера GlassFish или другого сервера, совместимого с Java EE 6, можно создавать проекты с поддержкой JSF 2.0 или добавлять поддержку JSF 2.0 к существующему проекту.
Создание нового проекта с поддержкой JSF 2.0
Используйте мастер создания проекта в среде IDE для создания нового веб-приложения Java. Для этого на главной панели инструментов среды IDE нажмите кнопку "Создать проект" (
) или нажмите сочетание клавиш CTRL+SHIFT+N (⌘+SHIFT+N на компьютере Mac). В 4 действии ("Платформы") выберите категорию "JavaServer Faces".
После выбора категории "JavaServer Faces" становятся доступными различные параметры настройки, как показано на изображении выше. Можно определить способ доступа проекта к библиотекам JSF 2.0. Выберите вкладку "Настройка" для указания способа регистрации сервлета Faces в дескрипторе развертывания проекта.
Добавление поддержки JSF 2.0 к существующему проекту
Если необходимо добавить поддержку JSF 2.0 в существующее веб-приложение Java, это можно выполнить из окна "Свойства" проекта.
- В окне "Проекты" (CTRL+1; ⌘+1 на компьютере Mac) щелкните правой кнопкой мыши узел проекта и выберите "Свойства". Открывается окно "Свойства проекта".
- Выберите категорию "Платформы", затем нажмите кнопку "Добавить". В открывшемся диалоговом окне выберите "JavaServer Faces".
После выбора категории "JavaServer Faces" становятся доступными различные параметры настройки, например, указание пути к библиотекам JSF 2.0 и регистрация сервлета Faces в дескрипторе развертывания проекта.
Использование редактора
Редактор среды IDE ориентирован на конкретный язык и обеспечивает поддержку в зависимости от типа файла, с которым работают. Как правило, можно нажать сочетание клавиш CTRL+ПРОБЕЛ на элементе в файле для вызова функции автозавершения кода и документации интерфейса API. Также можно использовать сочетания клавиш и шаблоны кодов.
Для просмотра общих сочетаний клавиш и шаблонов кодов выберите в основном меню среды IDE "Справка" > "Таблица сочетаний клавиш". Полный список приведен в документе Спецификация сочетания клавиш NetBeans IDE 6.x.
Среда IDE включает в себя встроенную поддержку документации Javadoc для JSF 2.0 API, а также Документацию по библиотеке тегов для JSF. Для использования этих ресурсов в работе просто выделите указанный элемент в редакторе и нажмите сочетание клавиш CTRL+ПРОБЕЛ.
Если необходим постоянный доступ к документации Javadoc, откройте окно "Javadoc" в среде IDE ("Окно" > "Другие > "Javadoc"). Окно "Javadoc" автоматически обновляется в зависимости от местонахождения курсора в редакторе.
При работе над проектом JSF усилия по правке тратятся прежде всего на файлы Facelets, управляемые компоненты JSF и файл настройки Faces (faces-config.xml). В следующих разделах дано краткое описание предоставленной поддержки редактора.
Редактор Facelets
Редактор Facelets среды IDE снабжен большим количеством функций, упрощающих разработку JSF, включая выделение синтаксиса и проверку тегов JSF на ошибки, поддержку документации и автозавершение кода для выражений на языке выражений, корневые библиотеки Facelets и пространства имен.
Для вызова поддержки автозавершения кода и документации нажмите сочетание клавиш CTRL+ПРОБЕЛ.
Кроме того, прежде чем нажать CTRL+ПРОБЕЛ, можно ввести префикс, например, jsf для фильтрации элементов.
Чтобы вызвать автозавершение кода для пространства имен Facelets, нажмите сочетание клавиш CTRL+ПРОБЕЛ.
Аналогичным образом, при вводе тега JSF, пространство имен которого не объявлено на странице, он автоматически добавляется в среде IDE к тегу <html> страницы.
В редакторе обеспечивается поддержка автозавершения кода для синтаксиса языка выражений. Нажмите сочетание клавиш CTRL+ПРОБЕЛ на коде языка выражений для вызова предложений скрытых объектов, управляемых компонентов JSF и их свойств.
Кроме того, в редакторе можно выделить фрагменты кода и выбрать "Преобразовать в составной компонент" для создания составных компонентов JSF. Подробные сведения приведены в разделе Мастер создания составного компонента.
Редактор включает в себя возможности проверки базовых ошибок. Ошибка подчеркивается красной линией и в левом поле помечается соответствующим значком. Предупреждения подчеркиваются желтой линией и помечаются в левом поле желтым значком. Для просмотра описания ошибки наведите указатель мыши на значок или подчеркнутый текст.
При вводе тегов JSF выполняются различные проверки. Среди них выполняются следующие проверки:
- на наличие объявленной библиотеки;
- на наличие у библиотеки, согласованной по префиксу тега, например компонента или тега;
- на наличие у тега всех требуемых атрибутов;
- на наличие всех введенных атрибутов в интерфейс компонента.
Редактором также выполняются следующие проверки:
- на наличие необъявленных компонентов;
- на наличие объявлений библиотеки тегов без использований.
Редактор конфигурации XML Faces
Если в проект JSF включен файл faces-config.xml, можно нажать сочетание клавиш CTRL+ПРОБЕЛ при определении правил перехода или объявлении управляемых компонентов для вызова поддержки автозавершения кода и документации.
При необходимости ввода правил перехода и управляемых компонентов с помощью диалоговых окон вместо написания их кода вручную в среде IDE для этой цели предусмотрено несколько диалоговых окон, специфичных для JSF. Они доступны в контекстом меню редактора.
В среде IDE имеются два отличительных представления файла faces-config.xml: представление XML, отображающее исходный код XML, и представление PageFlow, являющееся графическим интерфейсом, который изображает правила перехода JSF, определенные в файле faces-config.xml.
Например, если файл содержит следующее правило перехода:
<navigation-rule>
<from-view-id>/greeting.xhtml</from-view-id>
<navigation-case>
<from-outcome>response</from-outcome>
<to-view-id>/success.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
В представлении PageFlow отображается приведенное ниже отношение, которое указывает на то, что переход со страницы greeting.xhtml на страницу success.xhtml выполняется в том случае, если в NavigationHandler JSF передан "response".
Двойной щелчок в области компонентов в представлении PageFlow позволяет переходить непосредственно к исходному файлу. Например, при двойном щелчке в области компонента greeting.xhtml в редакторе открывается файл greeting.xhtml. Аналогичным образом, при двойном щелчке стрелки между двумя компонентами в редакторе произойдет фокусировка на правиле перехода, определенном в представлении XML faces-config.xml.
Мастеры JSF
В среде IDE NetBeans предоставляется большое число мастеров, упрощающих разработку с JSF 2.0. Можно создавать новые страницы Facelets, шаблоны Facelets, управляемые компоненты JSF, составные компоненты, файлы настройки Faces и многое другое.
Все мастеры доступны через общий мастер создания файла в среде IDE. Для открытия мастера создания файла нажмите кнопку "Создать файл" (
) или в основном меню выберите "Файл > Создать файл" (или нажмите сочетание клавиш CTRL+N; ⌘+N на компьютере Mac). Список специфичных для JSF мастеров представлен в категории "JavaServer Faces".
При работе в веб-проекте Java с поддержкой JSF доступны следующие мастеры.
Мастер создания страницы JSF
Используйте мастер создания страницы JSF для создания страниц Facelets и JSP в проекте. В мастер создания файла в среде IDE выберите категорию "JavaServer Faces", затем выберите "Страница JSF". В JSF 2.0 параметр "Facelets" является рекомендуемым способом для объявления страниц JSF. Параметр "Facelets" в мастере выбран по умолчанию. Выберите параметр "Файл JSP", если необходимо создать новые страницы JSP или фрагменты JSP (файлы .jspf).
Мастер создания управляемого компонента
С помощью мастера создания управляемого компонента в среде IDE можно создавать управляемые компоненты JSF. В категории "JavaServer Faces" в мастере создания файла в среде IDE выберите "Управляемый компонент JSF".
По умолчанию любые метаданные, указанные в мастере, преобразуются в аннотации, применяемые к управляемому компоненту, как только от будет создан. Например, как показано ниже, можно создать новый класс в контексте сеанса с именем NewJSFManagedBean и присвоить ему имя myManagedBean.
Если управляемый компонент создан, он появляется с соответствующими аннотациями.
package my.org;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name="myManagedBean")
@SessionScoped
public class NewJSFManagedBean {
/** Создает новый экземпляр NewJSFManagedBean */
public NewJSFManagedBean() {
}
}
Кроме того, если в проекте уже существует файл faces-config.xml, параметр "Добавить данные в файл настройки" становится активным в мастере, что позволяет либо объявить управляемый компонент в файле настройки Faces, либо иметь метаданные, указанные через аннотации в управляемом компоненте.
Мастер настройки Faces
В JSF 2.0 введены аннотации в качестве альтернативы стандартному файлу настройки Faces (faces-config.xml) для настройки приложения. Следовательно, при добавлении поддержки JSF 2.0 к проекту в среде IDE не создается файл faces-config.xml по умолчанию (как это было в случае с JSF 1.2). Естественно, при желании можно добавить файл faces-config.xml в проект для определения некоторых параметров настройки. Для этого используйте мастер настройки Faces в среде IDE.
В категории "JavaServer Faces" в мастере создания файла в среде IDE выберите "Настройка Faces JSF". Это позволит создать новый файл faces-config.xml, сохраняемый в папке WEB-INF проекта по умолчанию.
Описание поддержки редактора для faces-config.xml в среде IDE приведены в разделе Редактор настроек XML Faces.
Мастер создания составного компонента
Благодаря JSF 2.0 упростился процесс создания составных компонентов пользовательского интерфейса, которые могут повторно использоваться на веб-страницах. Для создания шаблона Facelets составного компонента JSF используйте мастер создания составного компонента в среде IDE.
Аналогично всем мастерам, относящимся к JSF, мастер создания составного компонента можно открыть в категории "JavaServer Faces" в мастере создания файла в среде IDE. Однако более интуитивным способом запроса мастера является выделение фрагмента кода на странице Facelets в редакторе и выбор Refactor ("Реорганизовать") > Convert to Composite Component ("Преобразовать в составной компонент") из всплывающего меню.
В следующем примере описываются выполняемые операции и имеющиеся ресурсы при работе с мастером создания составного компонента во фрагменте "<p>This is the composite component.</p>".
Открывается мастер создания составного компонента, содержащий выбранный фрагмент на панели "Раздел реализации".
По умолчанию, мастером создается папка ezcomp для сохранения составных компонентов. Например, при создании нового компонента с именем myComponent мастер создает страницу Facelets myComponent.xhtml, сохраняемую в папке resources/ezcomp корневого веб-узла приложения.
При завершении выполнения мастера исходный файл составного компонента создается для указанного фрагмента кода. Шаблон включает в себя ссылку на библиотеку тегов composite для JSF 2.0.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:cc="http://java.sun.com/jsf/composite">
<!-- INTERFACE -->
<cc:interface>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<p>This is the composite component.</p>
</cc:implementation>
</html>
Кроме того, новый тег компонента вставляется в позицию в редакторе при выделении фрагмента. В этом случае созданный тег – <ez:myComponent/>. Обратите внимание, что в среде IDE автоматически добавляется пространство имен, в котором находится составной компонент для тега <html> страницы.
В среде IDE поддерживаются гиперссылки на исходные файлы составных компонентов. К составному компоненту можно перейти со страницы Facelets, для этого наведите курсор мыши на тег компонента и нажмите клавишу CTRL (⌘ на компьютере Mac). При нажатии гиперссылки в редакторе открывается исходный файл составного компонента.
Дополнительные сведения о составных компонентах в JSF 2.0 приведены в разделе Истинная абстракция. Составные компоненты пользовательского интерфейса в JSF 2.0.
Мастер создания страниц JSF из классов сущностей
Обратитесь к разделу Создание страниц JSF из классов сущностей в Поддержке классов сущностей.
Мастер создания шаблона Facelets
Для создания шаблона Facelets используйте мастер создания шаблона Facelets. В категории "JavaServer Faces" мастера создания файла в среде IDE выберите "Шаблон Facelets". Можно выбрать один из восьми уникальных стилей размещения и указать тег CSS или HTML <table> для реализации размещения.
Мастер создает файл шаблона XHTML с помощью тегов <h:head> и <h:body> и сохраняет соответствующие таблицы стилей в папке resources/css корневого веб-узла приложения. Мастер создает файл default.css и cssLayout.css или файл tableLayout.css, зависящий от выбора размещения.
Для просмотра шаблона в обозревателе щелкните правой кнопкой мыши в области редактора и выберите команду "Просмотреть". Откроется окно обозревателя с отображением шаблона.
Мастер создания шаблонов Facelets
Используйте мастер создания клиентов шаблона Facelets для создания страницы в проекте, ссылающейся на шаблон Facelets. В категории "JavaServer Faces" мастера создания файлов в среде IDE выберите Facelets Template Client ("Клиент шаблона Facelets"). Можно указать местоположение шаблона Facelets, используемого клиентом. Также можно указать, является ли тегом корня <html> или <ui:composition>
Дополнительные сведения об использовании шаблонов и клиентов Facelets приведены в разделе Применение шаблона Facelets во Введение в JavaServer Faces 2.0 в среде IDE NetBeans.
Поддержка классов сущностей
В случае использования технологии сохранения состояния объектов Java в приложении и при наличии классов сущностей на основе схемы базы данных в среде IDE предусмотрены функциональные возможности, позволяющие эффективно работать с данными класса сущностей.
Примечание. Для создания классов сущностей из таблицы базы данных используйте мастер создания классов сущностей из базы данных в среде IDE, который вызывается в категории "Сохранение состояния" мастера создания файла в среде IDE.
Создание страниц JSF из классов сущностей
После создания классов сущностей в приложении можно использовать мастер создания страниц JSF из классов сущностей в среде IDE, чтобы создать веб-интерфейс для отображения и изменения данных классов сущностей. Код, созданный мастером, основан на аннотациях сохранения состояния, содержащихся в классах сущностей.
Для каждого класса сущностей мастером создается следующее:
- сеансный компонент без сохранения состояния для создания, извлечения, изменения и удаления экземпляров сущностей;
- управляемый компонент JSF в контексте сеанса;
- каталог, содержащий четыре файла Facelets возможностей CRUD (
Create.xhtml, Edit.xhtml, List.xhtml и View.xhtml);
- служебные классы, используемые управляемыми компонентами JSF (
JsfUtil, PaginationHelper);
- набор свойств для локализованных сообщений и соответствующая запись в файле настройки Faces проекта (создается файл
faces-config.xml, если он на данный момент отсутствует);
- вспомогательные веб-файлы, включая стандартную таблицу стилей для визуализированных компонентов и файл шаблона Facelets.
Для использования мастера создания страниц JSF из классов сущностей откройте мастер создания файла в среде IDE. Выберите категорию "JavaServer Faces", затем "Страницы JSF из классов сущностей".
В действии 3 "Создать страницы и классы JSF" можно указать папки для создаваемых файлов.
Например, при использовании мастера для класса сущностей Customer, параметры настройки, отображаемые на вышеприведенном изображении, вызывают создание следующих файлов:
Можно использовать диалоговое окно "Форма из сущности" для создания формы JSF, содержащей поля для всех свойств, имеющихся в классе сущностей. Необходимо уже иметь управляемый компонент JSF, созданный для обработки пользовательских данных, связанных с формой.
Примечание. При использовании этого диалогового окна без связанного управляемого компонента можно ввести имя для управляемого компонента в диалоговое окно, и это имя будет использоваться на странице независимо от того, действительно оно или нет. Затем можно создать управляемый компонент с помощью мастера создания управляемых компонентов, или при использовании мастера создания страниц JSF из классов сущностей управляемые компоненты будут созданы для выбранных классов сущностей.
Для открытия диалогового окна "Форма из сущности" нажмите сочетание клавиш CTRL+ПРОБЕЛ в редакторе страницы Facelets, затем выберите "Форма JSF из сущности", либо дважды щелкните позицию "Форма из сущности", выведенную на палитре в среде IDE (CTRL+SHIFT+8; ⌘+SHIFT+8 на компьютере Mac).
Например, на следующем изображении класс сущностей Customer уже существует в пакете my.org указанного проекта. Управляемый компонент customerController также уже существует в указанном проекте, и управляемый компонент содержит свойство с именем selected, которое возвращает объект Customer.
Примечание. Для создания формы с полями, доступными только для чтения выберите параметр "Создать представление, доступное только для чтения". При выборе этого параметра в среде IDE для полей формы применяются теги <h:outputText>, в то время как, если этот параметр не выбран, применяются теги <h:inputText>.
При завершении работы с диалоговым окном в среде IDE создается код для страницы Facelets. Например, класс сущностей Customer со свойством customerId отображается в следующем формате:
<f:view>
<h:form>
<h1><h:outputText value="Create/Edit"/></h1>
<h:panelGrid columns="2">
<h:outputLabel value="CustomerId:" for="customerId" />
<h:inputText id="customerId" value="#{customerController.selected.customerId}" title="CustomerId" required="true" requiredMessage="The CustomerId field is required."/>
...
[ Здесь добавляются другие поля. ]
...
</h:panelGrid>
</h:form>
</f:view>
Чтобы изменить шаблон, используемый для созданного кода, щелкните ссылку "Настройка шаблона" в диалоговом окне "Форма из сущности".
Создание таблицы данных JSF для данных сущностей
Можно использовать диалоговое окно "Таблица данных из сущности" для создания таблицы данных JSF, которая содержит столбцы для всех свойств, имеющихся в классе сущностей. Для использования этого средства необходимо уже иметь управляемый компонент JSF, созданный для обработки серверных данных, связанных с классом сущностей.
Примечание. При использовании этого диалогового окна без связанного управляемого компонента можно ввести имя для управляемого компонента в диалоговое окно, и это имя будет использоваться на странице независимо от того, действительно оно или нет. Затем можно создать управляемый компонент с помощью мастера создания управляемых компонентов, или при использовании мастера создания страниц JSF из классов сущностей управляемые компоненты будут созданы для выбранных классов сущностей.
Для открытия диалогового окна "Таблица данных из сущности" нажмите сочетание клавиш CTRL+ПРОБЕЛ в редакторе страницы Facelets, затем выберите "Таблица данных JSF из сущности", либо дважды щелкните позицию "Таблица данных из сущности", выведенную на палитре в среде IDE (CTRL+SHIFT+8; ⌘+SHIFT+8 на компьютере Mac).
Например, на следующем изображении класс сущностей Product уже существует в пакете my.org.entity указанного проекта. Управляемый компонент productController также существует в проекте и содержит метод с именем getProductItems(), который возвращает List объектов Product.
При завершении работы с диалоговым окном в среде IDE создается код для страницы Facelets. Например, класс сущностей Product со свойством productId отображается в следующем формате:
<f:view>
<h:form>
<h1><h:outputText value="List"/></h1>
<h:dataTable value="#{productController.productItems}" var="item">
<h:column>
<f:facet name="header">
<h:outputText value="ProductId"/>
</f:facet>
<h:outputText value="#{item.productId}"/>
</h:column>
...
[ Здесь добавляются другие столбцы. ]
...
</h:dataTable>
</h:form>
</f:view>
Чтобы изменить шаблон, используемый для созданного кода, щелкните ссылку "Настройка шаблона" в диалоговом окне "Форма из таблицы данных".
Элементы палитры JSF
При работе со страницами Facelets можно использовать палитру среды IDE для перетаскивания тегов JSF на страницу. Для открытия палитры выберите в основном меню "Окно" > "Палитра" или нажмите сочетание клавиш CTRL+SHIFT+8 (⌘+SHIFT+8 на компьютере Mac).
Также в основном меню среды IDE можно выбрать "Исходный код" > "Вставить код" (ALT+INS; CTRL+I на компьютере Mac) для вызова всплывающего списка, который содержит специфичные для JSF компоненты, имеющиеся в палитре.
На палитре предоставлено пять компонентов, связанных с JSF:
- Метаданные: вызов диалогового окна для добавления пары "имя-значение" с тегами метаданных JSF. Например, при указании "
myId" и "myValue" в качестве пары "имя-значение" создается следующий фрагмент кода:
<f:metadata>
<f:viewParam id='myId' value='myValue'/>
</f:metadata>
- Форма JSF: добавление следующего фрагмента кода на страницу.
<f:view>
<h:form>
</h:form>
</f:view>
- Форма JSF из сущности: вызов диалогового окна для связи данных из класса сущностей с полями, имеющимися в форме JSF. Обратитесь к разделу Создание формы JSF из данных сущностей.
- Таблица данных JSF: добавление следующего фрагмента кода на страницу.
<f:view>
<h:form>
<h:dataTable value="#{}" var="item">
</h:dataTable>
</h:form>
</f:view>
- Таблица данных JSF из сущности: вызов диалогового окна для связи данных из класса сущностей с полями, имеющимися в таблице данных JSF. Обратитесь к разделу Создание таблицы данных JSF для данных сущностей.
Дополнительные сведения
Дополнительные сведения о JSF 2.0 приведены в следующих материалах:
Статьи и учебные курсы по NetBeans
Внешние материалы
Блоги