| // |
| // 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; &#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 (&#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; &#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; &#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 (&#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)+] |
| |
| |
| |