| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| <html> |
| <head> |
| <title>Поддержка JSF 2.x в IDE NetBeans</title> |
| <meta http-equiv="content-type" content="text/html; charset=utf-8"> |
| <meta name="description" content="An article outlining JSF 2.x support in NetBeans IDE"> |
| <meta name="keywords" content="NetBeans, IDE, integrated development environment, |
| JavaServer Faces, JavaServer Faces 2.0, JSF, JSF 2.1"> |
| |
| <link rel="stylesheet" type="text/css" href="../../../netbeans.css"> |
| |
| <script src="../../../images_www/js/listCollapse.js" type="text/javascript"></script> |
| </head> |
| <body> |
| |
| <!-- Copyright (c) 2009, 2010, 2011, Oracle and/or its affiliates. All rights reserved. --> |
| |
| <h1>Поддержка JSF 2.x в IDE NetBeans</h1> |
| |
| <img alt="Содержимое на этой странице применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0" class="stamp" src="../../../images_www/articles/73/netbeans-stamp-80-74-73.png" title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"> |
| |
| <p>IDE NetBeans предоставляет различные функции, обеспечивающие встроенную поддержку для JavaServer Faces (JSF) 2.0 и 2.1. Поддержка JSF 2.x в среде IDE реализована на основе имеющейся поддержки для JavaServer Faces и включает в себя разнообразные усовершенствования редактора для страниц Facelet, различные средства для работы с классами сущностей и набор мастеров JSF для распространенных задач разработки, таких как создание управляемых компонентов JSF, шаблонов Facelet и составных компонентов.</p> |
| |
| <p>В следующих разделах описываются функции JSF 2.x, доступные для пользователей при работе в IDE NetBeans. Чтобы опробовать в работе новые функции JSF, <a href="https://netbeans.org/downloads/index.html">загрузите комплект Java среды IDE NetBeans</a>, включающий технологии Java Web и EE. Пакет загрузки также содержит GlassFish Server Open Source Edition, пример реализации спецификации платформы Java EE 6 (JSR 316).</p> |
| |
| |
| <h3>Содержание</h3> |
| |
| <ul id="collapsableList"> |
| <li><a href="#support">Поддержка JSF 2.x для проектов</a> |
| |
| <ul> |
| <li><a href="#creatingSupport">Создание нового проекта с поддержкой JSF 2.x</a></li> |
| <li><a href="#addingSupport">Добавление поддержки JSF 2.x в существующий проект</a></li> |
| </ul></li> |
| |
| <li><a href="#editor">Использование редактора</a> |
| |
| <ul> |
| <li><a href="#facelets">Редактор Facelets</a></li> |
| <li><a href="#xml">Редактор конфигурации XML Faces</a></li> |
| </ul></li> |
| |
| <li><a href="#wizard">Мастеры JSF</a> |
| |
| <ul> |
| <li><a href="#jsfPage">Мастер создания страницы JSF</a></li> |
| <li><a href="#managedBean">Мастер создания управляемого компонента JSF</a></li> |
| <li><a href="#facesConfig">Мастер настройки Faces</a></li> |
| <li><a href="#composite">Мастер создания составного компонента</a></li> |
| <li><a href="#jsfPagesEntity">Мастер создания страниц JSF из классов сущностей</a></li> |
| <li><a href="#faceletsTemplate">Мастер создания шаблона Facelets</a></li> |
| </ul></li> |
| |
| <li><a href="#entity">Поддержка классов сущностей</a> |
| |
| <ul> |
| <li><a href="#jsfPages">Создание страниц JSF из классов сущностей</a></li> |
| <li><a href="#form">Диалоговое окно "Форма из сущности"</a></li> |
| <li><a href="#dataTable">Диалоговое окно "Таблица данных из сущности"</a></li> |
| </ul></li> |
| |
| <li><a href="#palette">Элементы палитры JSF</a></li> |
| |
| <li><a href="#seealso">Дополнительные сведения</a></li> |
| </ul> |
| |
| |
| <h2 id="support">Поддержка JSF 2.x для проектов</h2> |
| |
| <p>Поддержка JSF для проектов разделена на категории следующим образом.</p> |
| |
| <ul> |
| <li>Файлы шаблонов Facelets включены в проект.</li> |
| <li>Библиотеки JSF 2 добавлены в путь к классам проекта.</li> |
| <li>Сервлет Faces и отображение сервлета добавлены в дескриптор развертывания проекта.</li> |
| </ul> |
| |
| <p>С помощью сервера GlassFish или любого другого сервера, совместимого с Java EE, можно создавать проекты с поддержкой JSF 2.x или добавлять поддержку JSF 2.x в существующие проекты.</p> |
| |
| <ul> |
| <li><a href="#creatingSupport">Создание нового проекта с поддержкой JSF 2.x</a></li> |
| <li><a href="#addingSupport">Добавление поддержки JSF 2.x в существующий проект</a></li> |
| </ul> |
| |
| <div class="indent"> |
| <h3 id="creatingSupport">Создание нового проекта с поддержкой JSF 2.x</h3> |
| |
| <p>Используйте мастер создания проекта в среде IDE для создания нового веб-приложения Java. Для этого нажмите кнопку 'Создать проект' ( <img alt="Кнопка 'Создать проект'" src="../../../images_www/articles/72/web/jsf20-support/new-project-btn.png"> ) на главной панели инструментов IDE или нажмите Ctrl-Shift-N (⌘-Shift-N в Mac). В 4 действии ("Платформы") выберите категорию "JavaServer Faces".</p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания проектов: платформы" class="b-all margin-around" src="../../../images_www/articles/80/web/jsf20-support/new-proj-wizard-framework.png" title="Добавление поддержки платформы при создании проекта"> |
| </div> |
| |
| <p>После выбора категории "JavaServer Faces" становятся доступными различные параметры настройки, как показано на изображении выше. Можно определить способ доступа проекта к библиотекам JSF 2.x. Выберите вкладку "Настройка" для указания способа регистрации сервлета Faces в дескрипторе развертывания проекта.</p> |
| |
| <div class="indent"> |
| <img alt="Вкладка 'Конфигурация'" class="b-all margin-around" src="../../../images_www/articles/80/web/jsf20-support/jsf-configuration.png" title="Укажите настройки сервлета Faces на вкеладке 'Конфигурация'"> |
| </div> |
| |
| |
| <h3 id="addingSupport">Добавление поддержки JSF 2.x в существующий проект</h3> |
| |
| <p>Если необходимо добавить поддержку JSF 2.x в существующее веб-приложение Java, это можно сделать в окне 'Свойства' проекта.</p> |
| |
| <ol> |
| <li>В окне 'Проекты' (Ctrl-1; ⌘-1 в Mac) щелкните правой кнопкой мыши узел проекта и выберите 'Свойства'. Открывается окно "Свойства проекта".</li> |
| |
| <li>Выберите категорию 'Платформы', а затем нажмите кнопку 'Добавить'. </li> |
| <li>Выберите 'JavaServer Faces' в диалоговом окне 'Добавление платформы'. Нажмите ОК. <br> <img alt="Окно 'Свойства проекта': диалоговок окно 'Добавить платформу'" class="b-all margin-around" src="../../../images_www/articles/80/web/jsf20-intro/add-framework.png" title="Добавление поддержки JSF к существующему проекту"> |
| |
| <p> |
| После выбора категории 'JavaServer Faces' становятся доступными различные параметры конфигурации, например указание пути к библиотекам JSF 2.x и регистрация сервлета Faces в дескрипторе развертывания проекта.</p></li> |
| </ol> |
| </div> |
| |
| |
| <br> |
| <h2 id="editor">Использование редактора</h2> |
| |
| <p>Редактор среды IDE ориентирован на конкретный язык и обеспечивает поддержку в зависимости от типа файла, с которым работают. Как правило, можно нажать сочетание клавиш CTRL+ПРОБЕЛ на элементе в файле для вызова функции автозавершения кода и документации интерфейса API. Также можно использовать сочетания клавиш и шаблоны кодов.</p> |
| |
| <p class="tips">Для просмотра общих сочетаний клавиш и шаблонов кодов выберите в основном меню среды IDE "Справка" > "Таблица сочетаний клавиш". Полный список см. в разделе <a href="http://wiki.netbeans.org/KeymapProfileFor60">Спецификация сочетаний клавиш IDE NetBeans 6.x</a>.</p> |
| |
| <p>Среда IDE включает в себя встроенную поддержку генератора документации Javadoc для <a href="http://javaserverfaces.java.net/nonav/docs/2.0/javadocs/index.html">JSF 2.0 API</a> и <a href="http://javaserverfaces.java.net/nonav/docs/2.1/javadocs/index.html">JSF 2.1 API</a>, а также <a href="http://javaserverfaces.java.net/nonav/docs/2.1/vdldocs/facelets/index.html">Документацию по библиотеке тегов</a>. Для использования этих ресурсов в работе просто выделите указанный элемент в редакторе и нажмите сочетание клавиш CTRL+ПРОБЕЛ.</p> |
| |
| <p class="tips">Если необходим постоянный доступ к документации Javadoc, откройте окно "Javadoc" в среде IDE ("Окно" > "Другие > "Javadoc"). Окно "Javadoc" автоматически обновляется в зависимости от местонахождения курсора в редакторе.</p> |
| |
| <p>При работе над проектом JSF усилия по правке тратятся прежде всего на файлы Facelets, управляемые компоненты JSF и файл настройки Faces (<code>faces-config.xml</code>). В следующих разделах дано краткое описание предоставленной поддержки редактора.</p> |
| |
| <ul> |
| <li><a href="#facelets">Редактор Facelets</a></li> |
| <li><a href="#xml">Редактор настройки XML Faces</a></li> |
| </ul> |
| |
| <div class="indent"> |
| |
| <h3 id="facelets">Редактор Facelets</h3> |
| |
| <p>Редактор Facelets среды IDE снабжен большим количеством функций, упрощающих разработку JSF, включая выделение синтаксиса и проверку тегов JSF на ошибки, поддержку документации и автозавершение кода для выражений на языке выражений, корневые библиотеки Facelets и пространства имен.</p> |
| |
| <p>Для вызова поддержки автозавершения кода и документации нажмите сочетание клавиш CTRL+ПРОБЕЛ (где применимо).</p> |
| |
| <div class="indent"> |
| <img alt="В редакторе IDE отображается поддержка автозавершения кода и документации" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/doc-support.png" title="Для вызова поддержки автозавершения кода и документации нажмите сочетание клавиш CTRL+ПРОБЕЛ."> |
| </div> |
| |
| <p id="popup">Если курсор не установлен на тег, нажатие сочетания клавиш CTRL+ПРОБЕЛ вызывает всплывающий список элементов. Аналогичный доступ к этим элементам можно получить из <a href="#palette">палитры</a> среды IDE (CTRL+SHIFT+8; &#8984+SHIFT+8 на компьютере Mac).</p> |
| |
| <p class="tips">Кроме того, прежде чем нажать CTRL+ПРОБЕЛ, можно ввести префикс, например, <code>jsf</code> для фильтрации элементов.</p> |
| |
| <div class="indent"> |
| <img alt="Список всплывающих окон автозавершения кода в редакторе IDE" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/code-completion.png" title="Нажмите Ctrl-Пробел в редакторе для вызова списка элементов"> |
| </div> |
| |
| <p>Чтобы вызвать автозавершение кода для пространства имен Facelets, нажмите сочетание клавиш CTRL+ПРОБЕЛ.</p> |
| |
| <div class="indent"> |
| <img alt="Список всплывающих окон автозавершения кода в редакторе IDE" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/namespace.png" title="Нажмите Ctrl-Пробел для завершения пространства имен Facelets"> |
| </div> |
| |
| <p>Аналогичным образом, при вводе тега JSF, пространство имен которого не объявлено на странице, он автоматически добавляется в среде IDE к тегу <code><html></code> страницы.</p> |
| |
| <p>В редакторе обеспечивается поддержка автозавершения кода для синтаксиса языка выражений. Нажмите сочетание клавиш CTRL+ПРОБЕЛ на коде языка выражений для вызова предложений скрытых объектов, управляемых компонентов JSF и их свойств.</p> |
| |
| <div class="indent"> |
| <img alt="Список всплывающих окон автозавершения кода для выражения EL" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/el-code-completion.png" title="Нажмите Ctrl-Пробел в выражениях EL для вызова поддержки автозавершения для неявных объектов, управляемых компонентов JSF и свойств компонентов"> |
| </div> |
| |
| <p>Кроме того, в редакторе можно выделить фрагменты кода и выбрать "Преобразовать в составной компонент" для создания составных компонентов JSF. Подробные сведения приведены в разделе <a href="#composite">Мастер создания составного компонента</a>.</p> |
| |
| <p>Редактор включает в себя возможности проверки базовых ошибок. Ошибка подчеркивается красной линией и в левом поле помечается соответствующим значком. Предупреждения подчеркиваются желтой линией и помечаются в левом поле желтым значком. Для просмотра описания ошибки наведите указатель мыши на значок или подчеркнутый текст.</p> |
| |
| <p>При вводе тегов JSF выполняются различные проверки. Среди них выполняются следующие проверки:</p> |
| |
| <ul> |
| <li>на наличие объявленной библиотеки;</li> |
| <li>на наличие у библиотеки, согласованной по префиксу тега, например компонента или тега;</li> |
| <li>на наличие у тега всех требуемых атрибутов;</li> |
| <li>на наличие всех введенных атрибутов в интерфейс компонента.</li> |
| </ul> |
| |
| <p>Редактором также выполняются следующие проверки:</p> |
| |
| <ul> |
| <li>на наличие необъявленных компонентов;</li> |
| <li>на наличие объявлений библиотеки тегов без использований.</li> |
| </ul> |
| |
| |
| <h3 id="xml">Редактор конфигурации XML Faces</h3> |
| |
| <p>Если в проект JSF включен файл <code>faces-config.xml</code>, можно нажать сочетание клавиш CTRL+ПРОБЕЛ при определении правил перехода или объявлении управляемых компонентов для вызова поддержки автозавершения кода и документации.</p> |
| |
| <p>Если вы предпочитаете вводить правила перехода и управляемые компоненты с помощью диалоговых окон вместо написания их кода вручную, в среде IDE предусмотрено для этой цели несколько диалоговых окон, специально предназначенных для JSF. Они доступны из контекстного меню редактора.</p> |
| |
| <div class="indent"> |
| <img alt="файл faces-config.xml - контекстное меню" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/faces-config-menu.png" title="Диалоговые окна, связанные с JSF, предоставлены в контекстном меню faces-config.xml "> |
| </div> |
| |
| <p>В среде IDE имеются два отдельных <em>представления</em> для файла <code>faces-config.xml</code>: представление 'Исходный код', в котором отображается исходный код XML, и представление PageFlow, которое является графическим интерфейсом и отображает правила навигации JSF, заданные в файле <code>faces-config.xml</code>.</p> |
| |
| <p>Например, если файл содержит следующее правило перехода:</p> |
| |
| <div class="indent"> |
| <pre class="examplecode"><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></pre> |
| </div> |
| |
| <p>В представлении PageFlow отображается приведенное ниже отношение, которое указывает на то, что переход со страницы <code>greeting.xhtml</code> на страницу <code>success.xhtml</code> выполняется в том случае, если в <code>NavigationHandler</code> JSF передан "<code>response</code>".</p> |
| |
| <div class="indent"> |
| <img alt="файл faces-config.xml - представление PageFlow" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/page-flow.png" title="В представлении PageFlow отображаются связи переходов"> |
| </div> |
| |
| <p>Двойной щелчок в области компонентов в представлении PageFlow позволяет переходить непосредственно к исходному файлу. Например, при двойном щелчке в области компонента <code>greeting.xhtml</code> в редакторе открывается файл <code>greeting.xhtml</code>. Аналогичным образом, при двойном щелчке стрелки между двумя компонентами в редакторе произойдет фокусировка на правиле перехода, определенном в представлении XML <code>faces-config.xml</code>.</p> |
| </div> |
| |
| |
| <br> |
| <h2 id="wizard">Мастеры JSF</h2> |
| |
| <p>IDE NetBeans включает в себя множество мастеров, упрощающих разработку с использованием JSF2.x. С помощью этих мастеров можно создавать новые страницы Facelets, шаблоны Facelet, управляемые компоненты JSF, составные компоненты, файлы конфигурации Faces и многое другое.</p> |
| |
| <p id="fileWizard">Все мастеры доступны через общий мастер создания файла в среде IDE. Для доступа к мастеру создания файлов нажмите кнопку 'Создать файл' ( <img alt="Кнопка 'Создать файл'" src="../../../images_www/articles/72/web/jsf20-support/new-file-btn.png"> ) или выберите 'Файл' > 'Создать файл' в главном меню (или нажмите Ctrl-N; ⌘-N в Mac). Список специфичных для JSF мастеров представлен в категории "JavaServer Faces".</p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания файлов: выбрана категория JavaServer Faces" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/file-wizard.png" title="Мастер, ориентированные на работу с JSF, доступны из мастера создания файлов"> |
| </div> |
| |
| <p>При работе в веб-проекте Java с поддержкой JSF доступны следующие мастеры.</p> |
| |
| <ul> |
| <li><a href="#jsfPage">Мастер создания страницы JSF</a></li> |
| <li><a href="#managedBean">Мастер создания управляемого компонента JSF</a></li> |
| <li><a href="#facesConfig">Мастер настройки Faces</a></li> |
| <li><a href="#composite">Мастер создания составного компонента</a></li> |
| <li><a href="#jsfPagesEntity">Мастер создания страниц JSF из классов сущностей</a></li> |
| <li><a href="#faceletsTemplate">Мастер создания шаблона Facelets</a></li> |
| <li><a href="#faceletsTemplateClient">Мастер создания клиентов шаблона Facelets</a></li> |
| </ul> |
| |
| <div class="indent"> |
| <h3 id="jsfPage">Мастер создания страницы JSF</h3> |
| |
| <p>Используйте мастер создания страницы JSF для создания страниц Facelets и JSP в проекте. В мастер создания файла в среде IDE выберите категорию "JavaServer Faces", затем выберите "Страница JSF". В JSF 2.x Facelet является предпочтительным способом объявления страниц JSF. Параметр "Facelets" в мастере выбран по умолчанию. Выберите параметр "Файл JSP", если необходимо создать новые страницы JSP или фрагменты JSP (файлы <code>.jspf</code>).</p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания файлов JSF" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/jsf-file-wizard.png" title="Создавайте страницы Facelets с помощью мастера файлов JSF среды IDE"> |
| </div> |
| |
| |
| <h3 id="managedBean">Мастер создания управляемого компонента</h3> |
| |
| <p>С помощью мастера создания управляемого компонента в среде IDE можно создавать управляемые компоненты JSF. В категории "JavaServer Faces" в <a href="#fileWizard">мастере создания файла</a> в среде IDE выберите "Управляемый компонент JSF".</p> |
| |
| <p>По умолчанию любые метаданные, указанные в мастере, преобразуются в аннотации, применяемые к управляемому компоненту, как только от будет создан. Например, как показано ниже, можно создать новый класс в контексте сеанса с именем <code>NewJSFManagedBean</code> и присвоить ему имя <code>myManagedBean</code>.</p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания управляемого компонента" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/managed-bean.png" title="Создайте управляемые компоненты JSF с помощью мастера управляемых компонентов IDE"> |
| </div> |
| |
| <p>Если управляемый компонент создан, он появляется с соответствующими аннотациями.</p> |
| |
| <pre class="examplecode">package my.org; |
| |
| import javax.faces.bean.ManagedBean; |
| import javax.faces.bean.SessionScoped; |
| |
| <strong>@ManagedBean(name="myManagedBean")</strong> |
| <strong>@SessionScoped</strong> |
| public class NewJSFManagedBean { |
| |
| /** Creates a new instance of NewJSFManagedBean */ |
| public NewJSFManagedBean() { |
| } |
| |
| }</pre> |
| |
| <p>Если в проекте уже существует файл <code>faces-config.xml</code>, в мастере становится доступен параметр 'Добавить данные в файл конфигурации', что позволяет либо объявить управляемый компонент в файле конфигурации Faces, либо указать любые метаданные посредством аннотаций в управляемом компоненте.</p> |
| |
| |
| <h3 id="facesConfig">Мастер настройки Faces</h3> |
| |
| <p>В JSF 2.x аннотации впервые используются в качестве альтернативы стандартному файлу конфигурации Faces (<code>faces-config.xml</code>) для создания конфигурации приложения. Следовательно, при добавлении поддержки JSF 2.x в проект IDE <em>не</em> создает стандартный файл <code>faces-config.xml</code> (в отличие от версии JSF 1.2). Естественно, при желании можно добавить файл <code>faces-config.xml</code> в проект для определения некоторых параметров настройки. Для этого используйте мастер настройки Faces в среде IDE.</p> |
| |
| <p>В категории "JavaServer Faces" в <a href="#fileWizard">мастере создания файла</a> в среде IDE выберите "Настройка Faces JSF". Это позволит создать новый файл <code>faces-config.xml</code>, сохраняемый в папке <code>WEB-INF</code> проекта по умолчанию.</p> |
| |
| <p class="tips">Описание поддержки редактора для <code>faces-config.xml</code> в среде IDE приведены в разделе <a href="#xml">Редактор настроек XML Faces</a>.</p> |
| |
| |
| <h3 id="composite">Мастер создания составного компонента</h3> |
| |
| <p>Благодаря JSF 2.x упростился процесс создания составных компонентов пользовательского интерфейса, которые могут повторно использоваться на веб-страницах. Для создания шаблона Facelets составного компонента JSF используйте мастер создания составного компонента в среде IDE.</p> |
| |
| <p>Аналогично всем мастерам, относящимся к JSF, мастер создания составного компонента можно открыть в категории "JavaServer Faces" в <a href="#fileWizard">мастере создания файла</a> в среде IDE. Однако более интуитивным способом запроса мастера является выделение фрагмента кода на странице Facelets в редакторе и выбор Refactor ("Реорганизовать") > Convert to Composite Component ("Преобразовать в составной компонент") из всплывающего меню.</p> |
| |
| <p>В следующем примере описываются выполняемые операции и имеющиеся ресурсы при работе с мастером создания составного компонента во фрагменте "<code><p>This is the composite component.</p></code>".</p> |
| |
| <div class="indent"> |
| <img alt="Редактор Facelets - параметр меню 'Преобразовать составной компонент'" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/convert-comp-component.png" title="Выделите фрагмент и выберите 'Преобразовать в составной компонент' в контекстном меню"> |
| </div> |
| |
| <p>Открывается мастер создания составного компонента, содержащий выбранный фрагмент на панели "Раздел реализации".</p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания составного компонента" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/comp-component.png" title="Открывается мастер создания составных компонентов, содержащий выбранный фрагмент кода"> |
| </div> |
| |
| <p>По умолчанию мастером создается папка <code>ezcomp</code> для сохранения составных компонентов. Например, при создании нового компонента с именем <code>myComponent</code> мастер создает страницу Facelets <code>myComponent.xhtml</code>, сохраняемую в папке <code>resources/ezcomp</code> корневого веб-узла приложения.</p> |
| |
| <p>При завершении выполнения мастера исходный файл составного компонента создается для указанного фрагмента кода. Шаблон включает в себя ссылку на библиотеку тегов <code>composite</code> для JSF 2.x.</p> |
| |
| <pre class="examplecode"><?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" |
| <strong>xmlns:cc="http://xmlns.jcp.org/jsf/composite"</strong>> |
| |
| <!-- INTERFACE --> |
| <cc:interface> |
| </cc:interface> |
| |
| <!-- IMPLEMENTATION --> |
| <cc:implementation> |
| <strong><p>This is the composite component.</p></strong> |
| </cc:implementation> |
| </html></pre> |
| |
| <p>Кроме того, новый тег компонента вставляется в позицию в редакторе при выделении фрагмента. В этом случае созданный тег – <code><ez:myComponent/></code>. Обратите внимание, что в среде IDE автоматически добавляется пространство имен, в котором находится составной компонент для тега <code><html></code> страницы.</p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания составного компонента" class="b-all margin-around" src="../../../images_www/articles/80/web/jsf20-support/comp-component-editor.png" title="Компоненты автоматически вставляются на используемую страницу"> |
| </div> |
| |
| <p class="tips">В среде IDE поддерживаются гиперссылки на исходные файлы составных компонентов. К составному компоненту можно перейти со страницы Facelets, для этого наведите курсор мыши на тег компонента и нажмите клавишу CTRL (&#8984 на компьютере Mac). При нажатии гиперссылки в редакторе открывается исходный файл составного компонента.</p> |
| |
| |
| |
| <p class="tips">Дополнительные сведения о составных компонентах в JSF 2.x приведены в разделе <a href="http://blogs.oracle.com/enterprisetechtips/entry/true_abstraction_composite_ui_components">Истинная абстракция. Составные компоненты пользовательского интерфейса в JSF 2.0</a>.</p> |
| |
| |
| <h3 id="jsfPagesEntity">Мастер создания страниц JSF из классов сущностей</h3> |
| |
| <p>Обратитесь к разделу <a href="#jsfPages">Создание страниц JSF из классов сущностей</a> в <a href="#entity">Поддержке классов сущностей</a>.</p> |
| |
| |
| <h3 id="faceletsTemplate">Мастер создания шаблона Facelets</h3> |
| |
| <p>Для создания шаблона Facelets используйте мастер создания шаблона Facelets. В категории "JavaServer Faces" <a href="#fileWizard">мастера создания файла</a> в среде IDE выберите "Шаблон Facelets". Можно выбрать один из восьми уникальных стилей размещения и указать тег CSS или HTML <code><table></code> для реализации размещения.</p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания шаблона Facelets" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/template-wizard.png" title="Создайте шаблон Facelets с помощью мастера шаблонов Facelets"> |
| </div> |
| |
| <p>Мастер создает файл шаблона XHTML с помощью тегов <code><h:head></code> и <code><h:body></code> и сохраняет соответствующие таблицы стилей в папке <code>resources/css</code> корневого веб-узла приложения. Мастер создает файл <code>default.css</code> и <code>cssLayout.css</code> или файл <code>tableLayout.css</code>, зависящий от выбора размещения.</p> |
| |
| <p class="tips">Для просмотра шаблона в браузере, щелкните правой кнопкой мыши в редакторе и выберите 'Просмотр'. Откроется окно браузера с отображением шаблона.</p> |
| |
| <h3 id="faceletsTemplate">Мастер создания шаблонов Facelets</h3> |
| |
| <p>Используйте мастер создания клиентов шаблона Facelets для создания страницы в проекте, ссылающейся на шаблон Facelets. В категории "JavaServer Faces" <a href="#fileWizard">мастера создания файлов</a> в среде IDE выберите Facelets Template Client ("Клиент шаблона Facelets"). Можно указать местоположение шаблона Facelets, используемого клиентом. Также можно указать, является ли тегом корня <tt><html></tt> или <tt><ui:composition></tt></p> |
| |
| <div class="indent"> |
| <img alt="Мастер создания клиентов шаблона Facelets" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/new-template-client.png" title="Создайте клиента для шаблона Facelets с помощью мастера клиента шаблонов Facelets"> |
| </div> |
| <p>Дополнительные сведения об использовании шаблонов и клиентов Facelets см. в разделе <a href="jsf20-intro.html#template">Применение шаблонов Facelets</a> главы <a href="jsf20-intro.html">Введение в JavaServer Faces 2.x в IDE NetBeans</a>.</p> |
| |
| </div> |
| |
| |
| <br> |
| <h2 id="entity">Поддержка классов сущностей</h2> |
| |
| <p>В случае использования технологии сохранения состояния объектов Java в приложении и при наличии классов сущностей на основе схемы базы данных в среде IDE предусмотрены функциональные возможности, позволяющие эффективно работать с данными класса сущностей.</p> |
| |
| <p><strong class="notes">Примечание. </strong>Для создания классов логических объектов с помощью таблицы баз данных используйте классы логических объектов IDE из мастера баз данных, доступные из категории 'Сохранение' в <a href="#fileWizard">Мастере файлов</a> в IDE.</p> |
| |
| <ul> |
| <li><a href="#jsfPages">Создание страниц JSF из классов сущностей</a></li> |
| <li><a href="#form">Создание формы JSF для данных сущностей</a></li> |
| <li><a href="#dataTable">Создание таблицы данных JSF для данных сущностей</a></li> |
| </ul> |
| |
| <div class="indent"> |
| <h3 id="jsfPages">Создание страниц JSF из классов сущностей</h3> |
| |
| <p>После создания классов сущностей в приложении можно использовать мастер создания страниц JSF из классов сущностей в среде IDE, чтобы создать веб-интерфейс для отображения и изменения данных классов сущностей. Код, созданный мастером, основан на аннотациях сохранения состояния, содержащихся в классах сущностей.</p> |
| |
| <p>Для каждого класса сущностей мастером создается следующее:</p> |
| |
| <ul> |
| <li>сеансный компонент без сохранения состояния для создания, извлечения, изменения и удаления экземпляров сущностей;</li> |
| |
| <li>управляемый компонент JSF в контексте сеанса;</li> |
| |
| <li>каталог, содержащий четыре файла Facelets возможностей CRUD (<code>Create.xhtml</code>, <code>Edit.xhtml</code>, <code>List.xhtml</code> и <code>View.xhtml</code>);</li> |
| |
| <li>служебные классы, используемые управляемыми компонентами JSF (<code>JsfUtil</code>, <code>PaginationHelper</code>);</li> |
| |
| <li>набор свойств для локализованных сообщений и соответствующая запись в файле настройки Faces проекта (создается файл <code>faces-config.xml</code>, если он на данный момент отсутствует);</li> |
| |
| <li>вспомогательные веб-файлы, включая стандартную таблицу стилей для визуализированных компонентов и файл шаблона Facelets.</li> |
| </ul> |
| |
| <p>Для использования мастера создания страниц JSF из классов сущностей <a href="#fileWizard">откройте мастер создания файла в среде IDE</a>. Выберите категорию "JavaServer Faces", затем "Страницы JSF из классов сущностей".</p> |
| |
| <p>В действии 3 "Создать страницы и классы JSF" можно указать папки для создаваемых файлов.</p> |
| |
| <div class="indent"> |
| <img alt="Шаг 3. Создание страниц и классов JSF" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/jsf-entity-wizard.png" title="Укажите местоположения создаваемых файлов"> |
| </div> |
| |
| <p>Например, при использовании мастера для класса сущностей <code>Customer</code> параметры настройки, отображаемые на вышеприведенном изображении, вызывают создание следующих файлов:</p> |
| |
| <table class="indent"> |
| <tr> |
| <td> |
| <img alt="Окно 'Проекты' - файлы, созданные с помощью мастера" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/projects-win-generated-files.png" title="В окне 'Проекты' отображается новые созданные файлы"> |
| </td> |
| <td class="valign-top"> |
| <ul style="margin-top:3em"> |
| <li>Файл <code>faces-config.xml</code> для регистрации местонахождения набора свойств, который содержит локализованные сообщения для представлений JSF. Например, при указании <code>/my/org/Bundle</code> в поле "Имя набора локализаций" в мастере создается следующая запись: |
| |
| <pre class="examplecode" style="width:500px"> |
| <application> |
| <resource-bundle> |
| <base-name>/my/org/Bundle</base-name> |
| <var>bundle</var> |
| </resource-bundle> |
| </application></pre></li> |
| |
| <li>Папка <code>customer</code> в корневом веб-узле, содержащая четыре файла Facelets для возможности CRUD: |
| |
| <ul> |
| <li><code>Create.xhtml</code>: форма JSF для создания нового клиента.</li> |
| <li><code>Edit.xhtml</code>: форма JSF для правки заказчика.</li> |
| <li><code>List.xhtml</code>: таблица данных JSF для прокрутки клиентов.</li> |
| <li><code>View.xhtml</code>: форма JSF для просмотра подробных сведений клиентов.</li> |
| </ul></li> |
| |
| <li><code>jsfcrud.css</code>: таблица стилей, используемая для визуализации форм JSF и таблицы данных.</li> |
| |
| <li><code>template.xhtml</code>: дополнительная страница шаблона Facelets, которая содержит ссылку на созданную таблицу стилей <code>jsfcrud.css</code>.</li> |
| |
| <li>Сеансный компонент (EJB) без сохранения состояния с именем <code>CustomerFacade</code>, который находится в пакете <code>my.org.data</code>. Доступ к классу также осуществляется из узла "Компоненты EJB" проекта.</li> |
| |
| <li><code>Bundle.properties</code>: набор свойств, содержащий стандартные локализованные сообщения для представлений JSF.</li> |
| |
| <li>Управляемый компонент JSF в контексте сеанса с именем <code>CustomerController</code>, который находится в пакете <code>my.org.ui</code>.</li> |
| |
| <li>Два служебных класса (<code>JsfUtil</code> и <code>PaginationHelper</code>), находящиеся в пакете <code>my.org.ui.util</code>. Эти классы используются в управляемом компоненте <code>CustomerController</code>.</li> |
| </ul> |
| </td> |
| </tr> |
| </table> |
| |
| |
| <h3 id="form">Создание формы JSF для данных сущностей</h3> |
| |
| <p>Можно использовать диалоговое окно "Форма из сущности" для создания формы JSF, содержащей поля для всех свойств, имеющихся в классе сущностей. Необходимо уже иметь управляемый компонент JSF, созданный для обработки пользовательских данных, связанных с формой.</p> |
| |
| <p><strong class="notes">Примечание. </strong>При использовании этого диалогового окна без связанного управляемого компонента Bean, можно ввести имя для управляемого компонента Bean в диалоговом окне и это имя будет использоваться на странице независимо от того, является ли оно допустимым или нет. Затем можно создать управляемый компонент с помощью <a href="#managedBean">мастера создания управляемых компонентов</a>, или при использовании <a href="#jsfPages">мастера создания страниц JSF из классов сущностей</a> управляемые компоненты будут созданы для выбранных классов сущностей.</p> |
| |
| <p>Для открытия диалогового окна "Форма из сущности" <a href="#popup">нажмите сочетание клавиш CTRL+ПРОБЕЛ в редакторе страницы Facelets</a>, затем выберите "Форма JSF из сущности", либо дважды щелкните позицию "Форма из сущности", выведенную на <a href="#palette">палитре</a> в среде IDE (CTRL+SHIFT+8; &#8984+SHIFT+8 на компьютере Mac).</p> |
| |
| <p>Например, на следующем изображении класс сущностей <code>Customer</code> уже существует в пакете <code>my.org</code> указанного проекта. Управляемый компонент <code>customerController</code> также уже существует в указанном проекте, и управляемый компонент содержит свойство с именем <code>selected</code>, которое возвращает объект <code>Customer</code>.</p> |
| |
| <div class="indent"> |
| <img alt="Диалоговое окно 'Форма JSF из сущности' " class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/jsf-form-from-entity.png" title="Используйте диалоговое окно 'Форма из сущности' для создания формы JSF с помощью данных сущности"> |
| </div> |
| |
| <p><strong class="notes">Примечание. </strong>Выберите параметр 'Создать представление, доступное только для чтения' для создания формы, содержащей поля, доступные только для чтения. При выборе этого параметра в среде IDE для полей формы применяются теги <code><h:outputText></code>, в то время как, если этот параметр не выбран, применяются теги <code><h:inputText></code>.</p> |
| |
| <p>При завершении работы с диалоговым окном в среде IDE создается код для страницы Facelets. Например, класс сущностей <code>Customer</code> со свойством <code>customerId</code> отображается в следующем формате:</p> |
| |
| <pre class="examplecode"><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."/> |
| ... |
| <em>[ Other fields added here. ]</em> |
| ... |
| </h:panelGrid> |
| </h:form> |
| </f:view></pre> |
| |
| <p class="tips">Чтобы изменить шаблон, используемый для созданного кода, щелкните ссылку "Настройка шаблона" в диалоговом окне "Форма из сущности".</p> |
| |
| |
| <h3 id="dataTable">Создание таблицы данных JSF для данных сущностей</h3> |
| |
| <p>Можно использовать диалоговое окно "Таблица данных из сущности" для создания таблицы данных JSF, которая содержит столбцы для всех свойств, имеющихся в классе сущностей. Для использования этого средства необходимо уже иметь управляемый компонент JSF, созданный для обработки серверных данных, связанных с классом сущностей.</p> |
| |
| <p><strong class="notes">Примечание. </strong>При использовании этого диалогового окна без связанного управляемого компонента Bean, можно ввести имя для управляемого компонента Bean в диалоговом окне и это имя будет использоваться на странице независимо от того, является ли оно допустимым или нет. Затем можно создать управляемый компонент с помощью <a href="#managedBean">мастера создания управляемых компонентов</a>, или при использовании <a href="#jsfPages">мастера создания страниц JSF из классов сущностей</a> управляемые компоненты будут созданы для выбранных классов сущностей.</p> |
| |
| <p>Для открытия диалогового окна "Таблица данных из сущности" <a href="#popup">нажмите сочетание клавиш CTRL+ПРОБЕЛ в редакторе страницы Facelets</a>, затем выберите "Таблица данных JSF из сущности", либо дважды щелкните позицию "Таблица данных из сущности", выведенную на <a href="#palette">палитре</a> в среде IDE (CTRL+SHIFT+8; &#8984+SHIFT+8 на компьютере Mac).</p> |
| |
| <p>Например, на следующем изображении класс сущностей <code>Product</code> уже существует в пакете <code>my.org.entity</code> указанного проекта. Управляемый компонент <code>productController</code> также существует в проекте и содержит метод с именем <code>getProductItems()</code>, который возвращает <code>List</code> объектов <code>Product</code>.</p> |
| |
| <div class="indent"> |
| <img alt="Диалоговое окно 'Таблица данных JSF из сущности'" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/jsf-data-table-from-entity.png" title="Используйте диалоговое окно 'Таблица данных из сущности' для создания таблицы данных JSF с помощью данных сущности"> |
| </div> |
| |
| <p>При завершении работы с диалоговым окном в среде IDE создается код для страницы Facelets. Например, класс сущностей <code>Product</code> со свойством <code>productId</code> отображается в следующем формате:</p> |
| |
| <pre class="examplecode"><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> |
| ... |
| <em>[ Other columns added here. ]</em> |
| ... |
| </h:dataTable> |
| </h:form> |
| </f:view></pre> |
| |
| <p class="tips">Чтобы изменить шаблон, используемый для созданного кода, щелкните ссылку "Настройка шаблона" в диалоговом окне "Форма из таблицы данных".</p> |
| </div> |
| |
| |
| <br> |
| <h2 id="palette">Элементы палитры JSF</h2> |
| |
| <p>При работе со страницами Facelets можно использовать палитру среды IDE для перетаскивания тегов JSF на страницу. Для открытия палитры выберите в основном меню "Окно" > "Палитра" или нажмите сочетание клавиш CTRL+SHIFT+8 (&#8984+SHIFT+8 на компьютере Mac).</p> |
| |
| <div class="indent"> |
| <img alt="Палитра с расширенной категорией JSF" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/palette.png" title="Используйте палитру IDE для перетаскивания общих компонентов JSF на страницу Facelets"> |
| </div> |
| |
| <p class="tips">Также в основном меню среды IDE можно выбрать "Исходный код" > "Вставить код" (ALT+INS; CTRL+I на компьютере Mac) для вызова всплывающего списка, который содержит специфичные для JSF компоненты, имеющиеся в палитре.</p> |
| |
| <div class="indent"> |
| <img alt="Список всплывающих окон автозавершения кода в редакторе IDE" class="b-all margin-around" src="../../../images_www/articles/72/web/jsf20-support/insert-code.png" title="В редакторе нажмите Alt-Insert (Ctrl-I в Mac) для вызова списка компонентов, связанных с JSF"> |
| </div> |
| |
| <p>На палитре предоставлено пять компонентов, связанных с JSF:</p> |
| |
| <ul> |
| <li><strong>Метаданные: </strong> вызов диалогового окна для добавления пары "имя-значение" с тегами метаданных JSF. Например, при указании "<code>myId</code>" и "<code>myValue</code>" в качестве пары "имя-значение" создается следующий фрагмент кода: |
| |
| <pre class="examplecode"><f:metadata> |
| <f:viewParam id='myId' value='myValue'/> |
| </f:metadata></pre></li> |
| |
| <li><strong>Форма JSF: </strong> добавление следующего фрагмента кода на страницу. |
| |
| <pre class="examplecode"><f:view> |
| <h:form> |
| </h:form> |
| </f:view></pre></li> |
| |
| <li><strong>Форма JSF из сущности: </strong>вызов диалогового окна для связи данных из класса сущностей с полями, имеющимися в форме JSF. Обратитесь к разделу <a href="#form">Создание формы JSF из данных сущностей</a>.</li> |
| |
| <li><strong>Таблица данных JSF: </strong>добавление следующего фрагмента кода на страницу. |
| |
| <pre class="examplecode"><f:view> |
| <h:form> |
| <h:dataTable value="#{}" var="item"> |
| </h:dataTable> |
| </h:form> |
| </f:view></pre></li> |
| |
| <li><strong>Таблица данных JSF из сущности: </strong>вызов диалогового окна для связи данных из класса сущностей с полями, имеющимися в таблице данных JSF. Обратитесь к разделу <a href="#dataTable">Создание таблицы данных JSF для данных сущностей</a>.</li> |
| </ul> |
| |
| <div class="feedback-box"> |
| <a href="/about/contact_form.html?to=3&subject=Feedback:%20JSF%202.x%20Support%20in%20NetBeans%20IDE">Отправить отзыв по этому учебному курсу</a> |
| </div> |
| |
| <br style="clear:both;"> |
| |
| |
| <h2 id="seealso">Дополнительные сведения</h2> |
| |
| <p>Подробнее о JSF 2.x см. в следующих ресурсах.</p> |
| |
| <div class="indent"> |
| <h3>Статьи и учебные курсы по NetBeans</h3> |
| |
| <ul> |
| <li><a href="jsf20-intro.html">Введение в JavaServer Faces 2. x в IDE NetBeans</a></li> |
| <li><a href="jsf20-crud.html">Создание приложения JavaServer Faces 2.x CRUD на основе базы данных</a></li> |
| <li><a href="../../samples/scrum-toys.html">Scrum Toys – полный пример приложения JSF 2.0</a></li> |
| <li><a href="../javaee/javaee-gettingstarted.html">Начало работы с приложениями Java EE</a></li> |
| <li><a href="../../trails/java-ee.html">Учебная карта по Java EE и Java Web</a></li> |
| </ul> |
| |
| <h3>Внешние ресурсы</h3> |
| |
| <ul> |
| <li><a href="http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html">Технология JavaServer Faces</a> (официальная домашняя страница)</li> |
| <li><a href="http://jcp.org/aboutJava/communityprocess/final/jsr314/index.html">Спецификация JSR 314 для JavaServer Faces 2.0</a></li> |
| <li><a href="http://download.oracle.com/javaee/6/tutorial/doc/bnaph.html">Учебный курс по Java EE 6. Глава 5. Технология JavaServer Faces</a></li> |
| <li><a href="http://javaserverfaces.java.net/">Сервер GlassFish Project Mojarra</a> (официальная эталонная реализация JSF 2.x)</li> |
| <li><a href="http://forums.oracle.com/forums/forum.jspa?forumID=982">Интернет-форум OTN: JavaServer Faces</a></li> |
| <li><a href="http://www.jsfcentral.com/">JSF Central</a></li> |
| </ul> |
| |
| <h3>Блоги</h3> |
| |
| <ul> |
| <li><a href="http://www.java.net/blogs/edburns/">Эд Бернс (Ed Burns)</a></li> |
| <li><a href="http://www.java.net/blogs/driscoll/">Джим Дрисколл (Jim Driscoll)</a></li> |
| </ul> |
| </div> |
| |
| <script type="text/javascript"> |
| <!-- |
| compactMenu('collapsableList', true, '± '); |
| --> |
| </script> |
| </body> |
| </html> |