blob: 8e257c1dd05ec231c89eea620bd9914e7dc81b32 [file] [log] [blame]
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
//
= Поддержка JSF 2.x в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Поддержка JSF 2.x в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Поддержка JSF 2.x в IDE NetBeans
image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"]
IDE NetBeans предоставляет различные функции, обеспечивающие встроенную поддержку для JavaServer Faces (JSF) 2.0 и 2.1. Поддержка JSF 2.x в среде IDE реализована на основе имеющейся поддержки для JavaServer Faces и включает в себя разнообразные усовершенствования редактора для страниц Facelet, различные средства для работы с классами сущностей и набор мастеров JSF для распространенных задач разработки, таких как создание управляемых компонентов JSF, шаблонов Facelet и составных компонентов.
В следующих разделах описываются функции JSF 2.x, доступные для пользователей при работе в IDE NetBeans. Чтобы опробовать в работе новые функции JSF, link:https://netbeans.org/downloads/index.html[+загрузите комплект Java среды IDE NetBeans+], включающий технологии Java Web и EE. Пакет загрузки также содержит GlassFish Server Open Source Edition, пример реализации спецификации платформы Java EE 6 (JSR 316).
[[support]]
== Поддержка JSF 2.x для проектов
Поддержка JSF для проектов разделена на категории следующим образом.
* Файлы шаблонов Facelets включены в проект.
* Библиотеки JSF 2 добавлены в путь к классам проекта.
* Сервлет Faces и отображение сервлета добавлены в дескриптор развертывания проекта.
С помощью сервера GlassFish или любого другого сервера, совместимого с Java EE, можно создавать проекты с поддержкой JSF 2.x или добавлять поддержку JSF 2.x в существующие проекты.
* <<creatingSupport,Создание нового проекта с поддержкой JSF 2.x>>
* <<addingSupport,Добавление поддержки JSF 2.x в существующий проект>>
[[creatingSupport]]
=== Создание нового проекта с поддержкой JSF 2.x
Используйте мастер создания проекта в среде IDE для создания нового веб-приложения Java. Для этого нажмите кнопку 'Создать проект' ( image:images/new-project-btn.png[] ) на главной панели инструментов IDE или нажмите Ctrl-Shift-N (⌘-Shift-N в Mac). В 4 действии ("Платформы") выберите категорию "JavaServer Faces".
image::images/new-proj-wizard-framework.png[title="Добавление поддержки платформы при создании проекта"]
После выбора категории "JavaServer Faces" становятся доступными различные параметры настройки, как показано на изображении выше. Можно определить способ доступа проекта к библиотекам JSF 2.x. Выберите вкладку "Настройка" для указания способа регистрации сервлета Faces в дескрипторе развертывания проекта.
image::images/jsf-configuration.png[title="Укажите настройки сервлета Faces на вкеладке 'Конфигурация'"]
[[addingSupport]]
=== Добавление поддержки JSF 2.x в существующий проект
Если необходимо добавить поддержку JSF 2.x в существующее веб-приложение Java, это можно сделать в окне 'Свойства' проекта.
1. В окне 'Проекты' (Ctrl-1; ⌘-1 в Mac) щелкните правой кнопкой мыши узел проекта и выберите 'Свойства'. Открывается окно "Свойства проекта".
2. Выберите категорию 'Платформы', а затем нажмите кнопку 'Добавить'.
3. Выберите 'JavaServer Faces' в диалоговом окне 'Добавление платформы'. Нажмите ОК.
image::images/add-framework.png[title="Добавление поддержки JSF к существующему проекту"]
После выбора категории 'JavaServer Faces' становятся доступными различные параметры конфигурации, например указание пути к библиотекам JSF 2.x и регистрация сервлета Faces в дескрипторе развертывания проекта.
[[editor]]
== Использование редактора
Редактор среды IDE ориентирован на конкретный язык и обеспечивает поддержку в зависимости от типа файла, с которым работают. Как правило, можно нажать сочетание клавиш CTRL+ПРОБЕЛ на элементе в файле для вызова функции автозавершения кода и документации интерфейса API. Также можно использовать сочетания клавиш и шаблоны кодов.
Для просмотра общих сочетаний клавиш и шаблонов кодов выберите в основном меню среды IDE "Справка" > "Таблица сочетаний клавиш". Полный список см. в разделе link:http://wiki.netbeans.org/KeymapProfileFor60[+Спецификация сочетаний клавиш IDE NetBeans 6.x+].
Среда IDE включает в себя встроенную поддержку генератора документации Javadoc для link:http://javaserverfaces.java.net/nonav/docs/2.0/javadocs/index.html[+JSF 2.0 API+] и link:http://javaserverfaces.java.net/nonav/docs/2.1/javadocs/index.html[+JSF 2.1 API+], а также link:http://javaserverfaces.java.net/nonav/docs/2.1/vdldocs/facelets/index.html[+Документацию по библиотеке тегов+]. Для использования этих ресурсов в работе просто выделите указанный элемент в редакторе и нажмите сочетание клавиш CTRL+ПРОБЕЛ.
Если необходим постоянный доступ к документации Javadoc, откройте окно "Javadoc" в среде IDE ("Окно" > "Другие > "Javadoc"). Окно "Javadoc" автоматически обновляется в зависимости от местонахождения курсора в редакторе.
При работе над проектом JSF усилия по правке тратятся прежде всего на файлы Facelets, управляемые компоненты JSF и файл настройки Faces (`faces-config.xml`). В следующих разделах дано краткое описание предоставленной поддержки редактора.
* <<facelets,Редактор Facelets>>
* <<xml,Редактор настройки XML Faces>>
[[facelets]]
=== Редактор Facelets
Редактор Facelets среды IDE снабжен большим количеством функций, упрощающих разработку JSF, включая выделение синтаксиса и проверку тегов JSF на ошибки, поддержку документации и автозавершение кода для выражений на языке выражений, корневые библиотеки Facelets и пространства имен.
Для вызова поддержки автозавершения кода и документации нажмите сочетание клавиш CTRL+ПРОБЕЛ (где применимо).
image::images/doc-support.png[title="Для вызова поддержки автозавершения кода и документации нажмите сочетание клавиш CTRL+ПРОБЕЛ."]
Если курсор не установлен на тег, нажатие сочетания клавиш CTRL+ПРОБЕЛ вызывает всплывающий список элементов. Аналогичный доступ к этим элементам можно получить из <<palette,палитры>> среды IDE (CTRL+SHIFT+8; &amp;#8984+SHIFT+8 на компьютере Mac).
Кроме того, прежде чем нажать CTRL+ПРОБЕЛ, можно ввести префикс, например, `jsf` для фильтрации элементов.
image::images/code-completion.png[title="Нажмите Ctrl-Пробел в редакторе для вызова списка элементов"]
Чтобы вызвать автозавершение кода для пространства имен Facelets, нажмите сочетание клавиш CTRL+ПРОБЕЛ.
image::images/namespace.png[title="Нажмите Ctrl-Пробел для завершения пространства имен Facelets"]
Аналогичным образом, при вводе тега JSF, пространство имен которого не объявлено на странице, он автоматически добавляется в среде IDE к тегу `<html>` страницы.
В редакторе обеспечивается поддержка автозавершения кода для синтаксиса языка выражений. Нажмите сочетание клавиш CTRL+ПРОБЕЛ на коде языка выражений для вызова предложений скрытых объектов, управляемых компонентов JSF и их свойств.
image::images/el-code-completion.png[title="Нажмите Ctrl-Пробел в выражениях EL для вызова поддержки автозавершения для неявных объектов, управляемых компонентов JSF и свойств компонентов"]
Кроме того, в редакторе можно выделить фрагменты кода и выбрать "Преобразовать в составной компонент" для создания составных компонентов JSF. Подробные сведения приведены в разделе <<composite,Мастер создания составного компонента>>.
Редактор включает в себя возможности проверки базовых ошибок. Ошибка подчеркивается красной линией и в левом поле помечается соответствующим значком. Предупреждения подчеркиваются желтой линией и помечаются в левом поле желтым значком. Для просмотра описания ошибки наведите указатель мыши на значок или подчеркнутый текст.
При вводе тегов JSF выполняются различные проверки. Среди них выполняются следующие проверки:
* на наличие объявленной библиотеки;
* на наличие у библиотеки, согласованной по префиксу тега, например компонента или тега;
* на наличие у тега всех требуемых атрибутов;
* на наличие всех введенных атрибутов в интерфейс компонента.
Редактором также выполняются следующие проверки:
* на наличие необъявленных компонентов;
* на наличие объявлений библиотеки тегов без использований.
[[xml]]
=== Редактор конфигурации XML Faces
Если в проект JSF включен файл `faces-config.xml`, можно нажать сочетание клавиш CTRL+ПРОБЕЛ при определении правил перехода или объявлении управляемых компонентов для вызова поддержки автозавершения кода и документации.
Если вы предпочитаете вводить правила перехода и управляемые компоненты с помощью диалоговых окон вместо написания их кода вручную, в среде IDE предусмотрено для этой цели несколько диалоговых окон, специально предназначенных для JSF. Они доступны из контекстного меню редактора.
image::images/faces-config-menu.png[title="Диалоговые окна, связанные с JSF, предоставлены в контекстном меню faces-config.xml "]
В среде IDE имеются два отдельных _представления_ для файла `faces-config.xml`: представление 'Исходный код', в котором отображается исходный код XML, и представление PageFlow, которое является графическим интерфейсом и отображает правила навигации JSF, заданные в файле `faces-config.xml`.
Например, если файл содержит следующее правило перехода:
[source,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`".
image::images/page-flow.png[title="В представлении PageFlow отображаются связи переходов"]
Двойной щелчок в области компонентов в представлении PageFlow позволяет переходить непосредственно к исходному файлу. Например, при двойном щелчке в области компонента `greeting.xhtml` в редакторе открывается файл `greeting.xhtml`. Аналогичным образом, при двойном щелчке стрелки между двумя компонентами в редакторе произойдет фокусировка на правиле перехода, определенном в представлении XML `faces-config.xml`.
[[wizard]]
== Мастеры JSF
IDE NetBeans включает в себя множество мастеров, упрощающих разработку с использованием JSF2.x. С помощью этих мастеров можно создавать новые страницы Facelets, шаблоны Facelet, управляемые компоненты JSF, составные компоненты, файлы конфигурации Faces и многое другое.
Все мастеры доступны через общий мастер создания файла в среде IDE. Для доступа к мастеру создания файлов нажмите кнопку 'Создать файл' ( image:images/new-file-btn.png[] ) или выберите 'Файл' > 'Создать файл' в главном меню (или нажмите Ctrl-N; ⌘-N в Mac). Список специфичных для JSF мастеров представлен в категории "JavaServer Faces".
image::images/file-wizard.png[title="Мастер, ориентированные на работу с JSF, доступны из мастера создания файлов"]
При работе в веб-проекте Java с поддержкой JSF доступны следующие мастеры.
* <<jsfPage,Мастер создания страницы JSF>>
* <<managedBean,Мастер создания управляемого компонента JSF>>
* <<facesConfig,Мастер настройки Faces>>
* <<composite,Мастер создания составного компонента>>
* <<jsfPagesEntity,Мастер создания страниц JSF из классов сущностей>>
* <<faceletsTemplate,Мастер создания шаблона Facelets>>
* <<faceletsTemplateClient,Мастер создания клиентов шаблона Facelets>>
[[jsfPage]]
=== Мастер создания страницы JSF
Используйте мастер создания страницы JSF для создания страниц Facelets и JSP в проекте. В мастер создания файла в среде IDE выберите категорию "JavaServer Faces", затем выберите "Страница JSF". В JSF 2.x Facelet является предпочтительным способом объявления страниц JSF. Параметр "Facelets" в мастере выбран по умолчанию. Выберите параметр "Файл JSP", если необходимо создать новые страницы JSP или фрагменты JSP (файлы `.jspf`).
image::images/jsf-file-wizard.png[title="Создавайте страницы Facelets с помощью мастера файлов JSF среды IDE"]
[[managedBean]]
=== Мастер создания управляемого компонента
С помощью мастера создания управляемого компонента в среде IDE можно создавать управляемые компоненты JSF. В категории "JavaServer Faces" в <<fileWizard,мастере создания файла>> в среде IDE выберите "Управляемый компонент JSF".
По умолчанию любые метаданные, указанные в мастере, преобразуются в аннотации, применяемые к управляемому компоненту, как только от будет создан. Например, как показано ниже, можно создать новый класс в контексте сеанса с именем `NewJSFManagedBean` и присвоить ему имя `myManagedBean`.
image::images/managed-bean.png[title="Создайте управляемые компоненты JSF с помощью мастера управляемых компонентов IDE"]
Если управляемый компонент создан, он появляется с соответствующими аннотациями.
[source,java]
----
package my.org;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
*@ManagedBean(name="myManagedBean")*
*@SessionScoped*
public class NewJSFManagedBean {
/** Creates a new instance of NewJSFManagedBean */
public NewJSFManagedBean() {
}
}
----
Если в проекте уже существует файл `faces-config.xml`, в мастере становится доступен параметр 'Добавить данные в файл конфигурации', что позволяет либо объявить управляемый компонент в файле конфигурации Faces, либо указать любые метаданные посредством аннотаций в управляемом компоненте.
[[facesConfig]]
=== Мастер настройки Faces
В JSF 2.x аннотации впервые используются в качестве альтернативы стандартному файлу конфигурации Faces (`faces-config.xml`) для создания конфигурации приложения. Следовательно, при добавлении поддержки JSF 2.x в проект IDE _не_ создает стандартный файл `faces-config.xml` (в отличие от версии JSF 1.2). Естественно, при желании можно добавить файл `faces-config.xml` в проект для определения некоторых параметров настройки. Для этого используйте мастер настройки Faces в среде IDE.
В категории "JavaServer Faces" в <<fileWizard,мастере создания файла>> в среде IDE выберите "Настройка Faces JSF". Это позволит создать новый файл `faces-config.xml`, сохраняемый в папке `WEB-INF` проекта по умолчанию.
Описание поддержки редактора для `faces-config.xml` в среде IDE приведены в разделе <<xml,Редактор настроек XML Faces>>.
[[composite]]
=== Мастер создания составного компонента
Благодаря JSF 2.x упростился процесс создания составных компонентов пользовательского интерфейса, которые могут повторно использоваться на веб-страницах. Для создания шаблона Facelets составного компонента JSF используйте мастер создания составного компонента в среде IDE.
Аналогично всем мастерам, относящимся к JSF, мастер создания составного компонента можно открыть в категории "JavaServer Faces" в <<fileWizard,мастере создания файла>> в среде IDE. Однако более интуитивным способом запроса мастера является выделение фрагмента кода на странице Facelets в редакторе и выбор Refactor ("Реорганизовать") > Convert to Composite Component ("Преобразовать в составной компонент") из всплывающего меню.
В следующем примере описываются выполняемые операции и имеющиеся ресурсы при работе с мастером создания составного компонента во фрагменте "`<p>This is the composite component.</p>`".
image::images/convert-comp-component.png[title="Выделите фрагмент и выберите 'Преобразовать в составной компонент' в контекстном меню"]
Открывается мастер создания составного компонента, содержащий выбранный фрагмент на панели "Раздел реализации".
image::images/comp-component.png[title="Открывается мастер создания составных компонентов, содержащий выбранный фрагмент кода"]
По умолчанию мастером создается папка `ezcomp` для сохранения составных компонентов. Например, при создании нового компонента с именем `myComponent` мастер создает страницу Facelets `myComponent.xhtml`, сохраняемую в папке `resources/ezcomp` корневого веб-узла приложения.
При завершении выполнения мастера исходный файл составного компонента создается для указанного фрагмента кода. Шаблон включает в себя ссылку на библиотеку тегов `composite` для JSF 2.x.
[source,html]
----
<?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://xmlns.jcp.org/jsf/composite"*>
<!-- INTERFACE -->
<cc:interface>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
*<p>This is the composite component.</p>*
</cc:implementation>
</html>
----
Кроме того, новый тег компонента вставляется в позицию в редакторе при выделении фрагмента. В этом случае созданный тег `<ez:myComponent/>`. Обратите внимание, что в среде IDE автоматически добавляется пространство имен, в котором находится составной компонент для тега `<html>` страницы.
image::images/comp-component-editor.png[title="Компоненты автоматически вставляются на используемую страницу"]
В среде IDE поддерживаются гиперссылки на исходные файлы составных компонентов. К составному компоненту можно перейти со страницы Facelets, для этого наведите курсор мыши на тег компонента и нажмите клавишу CTRL (&amp;#8984 на компьютере Mac). При нажатии гиперссылки в редакторе открывается исходный файл составного компонента.
Дополнительные сведения о составных компонентах в JSF 2.x приведены в разделе link:http://blogs.oracle.com/enterprisetechtips/entry/true_abstraction_composite_ui_components[+Истинная абстракция. Составные компоненты пользовательского интерфейса в JSF 2.0+].
[[jsfPagesEntity]]
=== Мастер создания страниц JSF из классов сущностей
Обратитесь к разделу <<jsfPages,Создание страниц JSF из классов сущностей>> в <<entity,Поддержке классов сущностей>>.
[[faceletsTemplate]]
=== Мастер создания шаблона Facelets
Для создания шаблона Facelets используйте мастер создания шаблона Facelets. В категории "JavaServer Faces" <<fileWizard,мастера создания файла>> в среде IDE выберите "Шаблон Facelets". Можно выбрать один из восьми уникальных стилей размещения и указать тег CSS или HTML `<table>` для реализации размещения.
image::images/template-wizard.png[title="Создайте шаблон Facelets с помощью мастера шаблонов Facelets"]
Мастер создает файл шаблона XHTML с помощью тегов `<h:head>` и `<h:body>` и сохраняет соответствующие таблицы стилей в папке `resources/css` корневого веб-узла приложения. Мастер создает файл `default.css` и `cssLayout.css` или файл `tableLayout.css`, зависящий от выбора размещения.
Для просмотра шаблона в браузере, щелкните правой кнопкой мыши в редакторе и выберите 'Просмотр'. Откроется окно браузера с отображением шаблона.
[[faceletsTemplateClient]]
=== Мастер создания шаблонов Facelets
Используйте мастер создания клиентов шаблона Facelets для создания страницы в проекте, ссылающейся на шаблон Facelets. В категории "JavaServer Faces" <<fileWizard,мастера создания файлов>> в среде IDE выберите Facelets Template Client ("Клиент шаблона Facelets"). Можно указать местоположение шаблона Facelets, используемого клиентом. Также можно указать, является ли тегом корня ``<html>`` или ``<ui:composition>``
image::images/new-template-client.png[title="Создайте клиента для шаблона Facelets с помощью мастера клиента шаблонов Facelets"]
Дополнительные сведения об использовании шаблонов и клиентов Facelets см. в разделе link:jsf20-intro.html#template[+Применение шаблонов Facelets+] главы link:jsf20-intro.html[+Введение в JavaServer Faces 2.x в IDE NetBeans+].
[[entity]]
== Поддержка классов сущностей
В случае использования технологии сохранения состояния объектов Java в приложении и при наличии классов сущностей на основе схемы базы данных в среде IDE предусмотрены функциональные возможности, позволяющие эффективно работать с данными класса сущностей.
*Примечание. *Для создания классов логических объектов с помощью таблицы баз данных используйте классы логических объектов IDE из мастера баз данных, доступные из категории 'Сохранение' в <<fileWizard,Мастере файлов>> в IDE.
* <<jsfPages,Создание страниц JSF из классов сущностей>>
* <<form,Создание формы JSF для данных сущностей>>
* <<dataTable,Создание таблицы данных JSF для данных сущностей>>
[[jsfPages]]
=== Создание страниц JSF из классов сущностей
После создания классов сущностей в приложении можно использовать мастер создания страниц JSF из классов сущностей в среде IDE, чтобы создать веб-интерфейс для отображения и изменения данных классов сущностей. Код, созданный мастером, основан на аннотациях сохранения состояния, содержащихся в классах сущностей.
Для каждого класса сущностей мастером создается следующее:
* сеансный компонент без сохранения состояния для создания, извлечения, изменения и удаления экземпляров сущностей;
* управляемый компонент JSF в контексте сеанса;
* каталог, содержащий четыре файла Facelets возможностей CRUD (`Create.xhtml`, `Edit.xhtml`, `List.xhtml` и `View.xhtml`);
* служебные классы, используемые управляемыми компонентами JSF (`JsfUtil`, `PaginationHelper`);
* набор свойств для локализованных сообщений и соответствующая запись в файле настройки Faces проекта (создается файл `faces-config.xml`, если он на данный момент отсутствует);
* вспомогательные веб-файлы, включая стандартную таблицу стилей для визуализированных компонентов и файл шаблона Facelets.
Для использования мастера создания страниц JSF из классов сущностей <<fileWizard,откройте мастер создания файла в среде IDE>>. Выберите категорию "JavaServer Faces", затем "Страницы JSF из классов сущностей".
В действии 3 "Создать страницы и классы JSF" можно указать папки для создаваемых файлов.
image::images/jsf-entity-wizard.png[title="Укажите местоположения создаваемых файлов"]
Например, при использовании мастера для класса сущностей `Customer` параметры настройки, отображаемые на вышеприведенном изображении, вызывают создание следующих файлов:
|===
|image:images/projects-win-generated-files.png[title="В окне 'Проекты' отображается новые созданные файлы"] |
* Файл `faces-config.xml` для регистрации местонахождения набора свойств, который содержит локализованные сообщения для представлений JSF. Например, при указании `/my/org/Bundle` в поле "Имя набора локализаций" в мастере создается следующая запись:
[source,xml]
----
<application>
<resource-bundle>
<base-name>/my/org/Bundle</base-name>
<var>bundle</var>
</resource-bundle>
</application>
----
* Папка `customer` в корневом веб-узле, содержащая четыре файла Facelets для возможности CRUD:
* `Create.xhtml`: форма JSF для создания нового клиента.
* `Edit.xhtml`: форма JSF для правки заказчика.
* `List.xhtml`: таблица данных JSF для прокрутки клиентов.
* `View.xhtml`: форма JSF для просмотра подробных сведений клиентов.
* `jsfcrud.css`: таблица стилей, используемая для визуализации форм JSF и таблицы данных.
* `template.xhtml`: дополнительная страница шаблона Facelets, которая содержит ссылку на созданную таблицу стилей `jsfcrud.css`.
* Сеансный компонент (EJB) без сохранения состояния с именем `CustomerFacade`, который находится в пакете `my.org.data`. Доступ к классу также осуществляется из узла "Компоненты EJB" проекта.
* `Bundle.properties`: набор свойств, содержащий стандартные локализованные сообщения для представлений JSF.
* Управляемый компонент JSF в контексте сеанса с именем `CustomerController`, который находится в пакете `my.org.ui`.
* Два служебных класса (`JsfUtil` и `PaginationHelper`), находящиеся в пакете `my.org.ui.util`. Эти классы используются в управляемом компоненте `CustomerController`.
|===
[[form]]
=== Создание формы JSF для данных сущностей
Можно использовать диалоговое окно "Форма из сущности" для создания формы JSF, содержащей поля для всех свойств, имеющихся в классе сущностей. Необходимо уже иметь управляемый компонент JSF, созданный для обработки пользовательских данных, связанных с формой.
*Примечание. *При использовании этого диалогового окна без связанного управляемого компонента Bean, можно ввести имя для управляемого компонента Bean в диалоговом окне и это имя будет использоваться на странице независимо от того, является ли оно допустимым или нет. Затем можно создать управляемый компонент с помощью <<managedBean,мастера создания управляемых компонентов>>, или при использовании <<jsfPages,мастера создания страниц JSF из классов сущностей>> управляемые компоненты будут созданы для выбранных классов сущностей.
Для открытия диалогового окна "Форма из сущности" <<popup,нажмите сочетание клавиш CTRL+ПРОБЕЛ в редакторе страницы Facelets>>, затем выберите "Форма JSF из сущности", либо дважды щелкните позицию "Форма из сущности", выведенную на <<palette,палитре>> в среде IDE (CTRL+SHIFT+8; &amp;#8984+SHIFT+8 на компьютере Mac).
Например, на следующем изображении класс сущностей `Customer` уже существует в пакете `my.org` указанного проекта. Управляемый компонент `customerController` также уже существует в указанном проекте, и управляемый компонент содержит свойство с именем `selected`, которое возвращает объект `Customer`.
image::images/jsf-form-from-entity.png[title="Используйте диалоговое окно 'Форма из сущности' для создания формы JSF с помощью данных сущности"]
*Примечание. *Выберите параметр 'Создать представление, доступное только для чтения' для создания формы, содержащей поля, доступные только для чтения. При выборе этого параметра в среде IDE для полей формы применяются теги `<h:outputText>`, в то время как, если этот параметр не выбран, применяются теги `<h:inputText>`.
При завершении работы с диалоговым окном в среде IDE создается код для страницы Facelets. Например, класс сущностей `Customer` со свойством `customerId` отображается в следующем формате:
[source,xml]
----
<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."/>
...
_[ Other fields added here. ]_
...
</h:panelGrid>
</h:form>
</f:view>
----
Чтобы изменить шаблон, используемый для созданного кода, щелкните ссылку "Настройка шаблона" в диалоговом окне "Форма из сущности".
[[dataTable]]
=== Создание таблицы данных JSF для данных сущностей
Можно использовать диалоговое окно "Таблица данных из сущности" для создания таблицы данных JSF, которая содержит столбцы для всех свойств, имеющихся в классе сущностей. Для использования этого средства необходимо уже иметь управляемый компонент JSF, созданный для обработки серверных данных, связанных с классом сущностей.
*Примечание. *При использовании этого диалогового окна без связанного управляемого компонента Bean, можно ввести имя для управляемого компонента Bean в диалоговом окне и это имя будет использоваться на странице независимо от того, является ли оно допустимым или нет. Затем можно создать управляемый компонент с помощью <<managedBean,мастера создания управляемых компонентов>>, или при использовании <<jsfPages,мастера создания страниц JSF из классов сущностей>> управляемые компоненты будут созданы для выбранных классов сущностей.
Для открытия диалогового окна "Таблица данных из сущности" <<popup,нажмите сочетание клавиш CTRL+ПРОБЕЛ в редакторе страницы Facelets>>, затем выберите "Таблица данных JSF из сущности", либо дважды щелкните позицию "Таблица данных из сущности", выведенную на <<palette,палитре>> в среде IDE (CTRL+SHIFT+8; &amp;#8984+SHIFT+8 на компьютере Mac).
Например, на следующем изображении класс сущностей `Product` уже существует в пакете `my.org.entity` указанного проекта. Управляемый компонент `productController` также существует в проекте и содержит метод с именем `getProductItems()`, который возвращает `List` объектов `Product`.
image::images/jsf-data-table-from-entity.png[title="Используйте диалоговое окно 'Таблица данных из сущности' для создания таблицы данных JSF с помощью данных сущности"]
При завершении работы с диалоговым окном в среде IDE создается код для страницы Facelets. Например, класс сущностей `Product` со свойством `productId` отображается в следующем формате:
[source,xml]
----
<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>
...
_[ Other columns added here. ]_
...
</h:dataTable>
</h:form>
</f:view>
----
Чтобы изменить шаблон, используемый для созданного кода, щелкните ссылку "Настройка шаблона" в диалоговом окне "Форма из таблицы данных".
[[palette]]
== Элементы палитры JSF
При работе со страницами Facelets можно использовать палитру среды IDE для перетаскивания тегов JSF на страницу. Для открытия палитры выберите в основном меню "Окно" > "Палитра" или нажмите сочетание клавиш CTRL+SHIFT+8 (&amp;#8984+SHIFT+8 на компьютере Mac).
image::images/palette.png[title="Используйте палитру IDE для перетаскивания общих компонентов JSF на страницу Facelets"]
Также в основном меню среды IDE можно выбрать "Исходный код" > "Вставить код" (ALT+INS; CTRL+I на компьютере Mac) для вызова всплывающего списка, который содержит специфичные для JSF компоненты, имеющиеся в палитре.
image::images/insert-code.png[title="В редакторе нажмите Alt-Insert (Ctrl-I в Mac) для вызова списка компонентов, связанных с JSF"]
На палитре предоставлено пять компонентов, связанных с JSF:
* *Метаданные: * вызов диалогового окна для добавления пары "имя-значение" с тегами метаданных JSF. Например, при указании "`myId`" и "`myValue`" в качестве пары "имя-значение" создается следующий фрагмент кода:
[source,xml]
----
<f:metadata>
<f:viewParam id='myId' value='myValue'/>
</f:metadata>
----
* *Форма JSF: * добавление следующего фрагмента кода на страницу.
[source,xml]
----
<f:view>
<h:form>
</h:form>
</f:view>
----
* *Форма JSF из сущности: *вызов диалогового окна для связи данных из класса сущностей с полями, имеющимися в форме JSF. Обратитесь к разделу <<form,Создание формы JSF из данных сущностей>>.
* *Таблица данных JSF: *добавление следующего фрагмента кода на страницу.
[source,xml]
----
<f:view>
<h:form>
<h:dataTable value="#{}" var="item">
</h:dataTable>
</h:form>
</f:view>
----
* *Таблица данных JSF из сущности: *вызов диалогового окна для связи данных из класса сущностей с полями, имеющимися в таблице данных JSF. Обратитесь к разделу <<dataTable,Создание таблицы данных JSF для данных сущностей>>.
link:/about/contact_form.html?to=3&subject=Feedback:%20JSF%202.x%20Support%20in%20NetBeans%20IDE[+Отправить отзыв по этому учебному курсу+]
[[seealso]]
== Дополнительные сведения
Подробнее о JSF 2.x см. в следующих ресурсах.
=== Статьи и учебные курсы по NetBeans
* link:jsf20-intro.html[+Введение в JavaServer Faces 2. x в IDE NetBeans+]
* link:jsf20-crud.html[+Создание приложения JavaServer Faces 2.x CRUD на основе базы данных+]
* link:../../samples/scrum-toys.html[+Scrum Toys полный пример приложения JSF 2.0+]
* link:../javaee/javaee-gettingstarted.html[+Начало работы с приложениями Java EE+]
* link:../../trails/java-ee.html[+Учебная карта по Java EE и Java Web+]
=== Внешние ресурсы
* link:http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html[+Технология JavaServer Faces+] (официальная домашняя страница)
* link:http://jcp.org/aboutJava/communityprocess/final/jsr314/index.html[+Спецификация JSR 314 для JavaServer Faces 2.0+]
* link:http://download.oracle.com/javaee/6/tutorial/doc/bnaph.html[+Учебный курс по Java EE 6. Глава 5. Технология JavaServer Faces+]
* link:http://javaserverfaces.java.net/[+Сервер GlassFish Project Mojarra+] (официальная эталонная реализация JSF 2.x)
* link:http://forums.oracle.com/forums/forum.jspa?forumID=982[+Интернет-форум OTN: JavaServer Faces+]
* link:http://www.jsfcentral.com/[+JSF Central+]
=== Блоги
* link:http://www.java.net/blogs/edburns/[+Эд Бернс (Ed Burns)+]
* link:http://www.java.net/blogs/driscoll/[+Джим Дрисколл (Jim Driscoll)+]