FeaturesPluginsDocs & SupportCommunityPartners

Использование библиотеки Hibernate в визуальном веб-приложении JSF

В данном руководстве описано создание и развертывание с помощью среды IDE NetBeans веб-приложения для просмотра данных из базы данных. Веб-приложение использует библиотеку Hibernate как уровень сохранения состояния для сохранения состояния объектов Java относительно реляционной базы данных.

Библиотека Hibernate предоставляет средства для реляционной привязки объектов (ORM). В руководстве демонстрируется добавление поддержки библиотеки Hibernate к среде IDE и создание необходимых файлов Hibernate для использования Hibernate в целях обеспечения сохранения состояния простых старых объектов Java (POJO). Для получения дополнительных сведений об использовании библиотеки Hibernate см. документацию по Hibernate по адресу hibernate.org.

После создания объектов Java и настройки приложения для использования Hibernate для отображения данных к веб-странице будут добавлены элементы визуального веб-приложения JSF. Для ознакомления с использованием элементов визуального веб-приложения JSF см. Введение в разработку визуальных веб-приложений JSF в среде NetBeans.

Содержание

Содержимое на этой странице относится к среде IDE NetBeans 6.1

Для работы с этим руководством требуется программное обеспечение и ресурсы, перечисленные ниже.

Программное обеспечение или ресурс Требуемая версия
Среда IDE NetBeans Web & Java EE, версия 6.1
Комплект для разработчика на языке Java (JDK) версия 6 или
версия 5
Элементы JavaServer Faces
Платформа Java EE
1.2 с Java EE 5* или
1.1 с J2EE 1.4
Сервер приложений GlassFish V2
Подключаемый модуль библиотеки Hibernate доступен в центре NetBeans Update Center
База данных TRAVEL да

Добавление поддержки библиотеки Hibernate к среде IDE

Для интеграции поддержки библиотеки Hibernate в среде IDE необходимо установить подключаемые модули библиотеки Hibernate, которые можно получить в центре NetBeans Beta Update Center. Доступны два подключаемых модуля для библиотеки Hibernate.

  1. Выберите "Tools > Plugins" в главном меню.
  2. На вкладке "Available Plugins" выберите следующие подключаемые модули и нажмите кнопку "Install".
    • Hibernate Support
    • Hibernate 3.2.5 Library
  3. Для установки подключаемых модулей следуйте указаниям мастера.
Диспетчер подключаемых модулей с модулями Hibernate

Установка подключаемых модулей Hibernate означает поддержку создания файлов Hibernate и добавления библиотек Hibernate к проектам.

Создание проекта веб-приложения

В этом примере будет создан проект визуального веб-приложения JSF, к которому будут добавлены библиотеки Hibernate. При создании проекта потребуется выбрать "Visual Web JSF" и "Hibernate" на экране "Frameworks" в мастере создания проекта. Также следует указать базу данных.

  1. Выберите "File > New Project" (Ctrl-Shift-N). Выберите "Web Application" в категории "Web" и нажмите кнопку "Next".
  2. В качестве имени проекта введите HibernateTravelApp и установите местоположение проекта.
  3. Снимите флажок "Use Dedicated Folder", если он выбран.
    (В рамках этого руководства копирование библиотек проекта в выделенную папку лишено смысла, поскольку совместное использование библиотек с другими пользователями не потребуется.)
    Нажмите кнопку "Next".
  4. Выберите сервер "GlassFish" и установите в поле "Java EE Version" версию "Java EE 5". Нажмите кнопку "Next".
  5. Установите флажок "Visual Web JavaServer Faces".
  6. Установите флажок "Hibernate 3.2.5".
  7. Используйте имя сеанса по умолчанию (session1) и проверьте, что в полях "Database Connection" и "Connection URL" выбрана база данных TRAVEL. Нажмите кнопку "Finish".

Примечание: Среда IDE поставляется со стандартной базой данных TRAVEL и предварительно настроенным подключением к базе данных. Если база данных TRAVEL не доступна для выбора в мастере на экране "Frameworks", то необходимо проверить, представлено ли подключение в узле "Databases" в окне "Services". При отсутствии подключения следует создать подключение к базе данных.

Экран "Frameworks" мастера создания проекта

После нажатия кнопки "Finish" в среде IDE создается проект веб-приложения, и в редакторе открывается файл hibernate.cfg.xml и Page1.

После разворачивания узла "Libraries" в окне "Projects" видно, что к проекту добавлены библиотеки Hibernate.

Пример экрана: окно "Projects" с библиотеками Hibernate

Изменение файла настройки библиотеки Hibernate

При создании нового проекта, использующего библиотеку Hibernate, в среде IDE автоматически создается файл настройки hibernate.cfg.xml в корне контекстного пути к классам приложения (в окне "Files", "WEB-INF/classes"). Файл расположен в узле "Configuration Files" в окне "Projects". Файл настройки содержит информацию о подключении к базе данных, отображении ресурсов и других свойствах подключения. Файл можно изменить с помощью редактора или внести изменения в код XML непосредственно в редакторе XML.

В этом упражнении будут изменяться свойства по умолчанию, указанные в hibernate.cfg.xml, для включения протоколирования отладки для операторов SQL и управления контекстами сеанса библиотеки Hibernate.

  1. Откройте файл hibernate.cfg.xml на вкладке "Design", если он еще не открыт. Для открытия файла можно развернуть узел "Configuration Files" в окне "Projects" и дважды щелкнуть hibernate.cfg.xml.
  2. Разверните узел "Configuration Properties" в области "Optional Properties".
  3. Нажмите кнопку "Add" для открытия диалогового окна "Add Hibernate Property".
  4. В диалоговом окне выберите свойство hibernate.show_sql и установите значение true. Это приведет к включению протоколирования отладки операторов SQL.
    Диалоговое окно "Add Hibernate Property" для свойства "hibernate.show_sql"
  5. Разверните узел "Miscellaneous Properties" и нажмите кнопку "Add".
  6. В диалоговом окне выберите properties hibernate.current_session_context_class и установите значение thread для включения автоматического управления контекстами сеанса библиотеки Hibernate.
    Диалоговое окно "Add Hibernate Property" для свойства "hibernate.current_session_context_class"

    При щелчке вкладки "XML" в редакторе можно просмотреть файл в режиме XML. Файл должен выглядеть следующим образом:

    <hibernate-configuration>
        <session-factory name="session1">
            <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
            <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
            <property name="hibernate.connection.url">jdbc:derby://localhost:1527/travel</property>
            <property name="hibernate.connection.username">travel</property>
            <property name="hibernate.connection.password">travel</property>
            <property name="hibernate.show_sql">true</property>
            <property name="hibernate.current_session_context_class">thread</property>
        </session-factory>
    </hibernate-configuration>
  7. Сохраните измененный файл.

Создание объектов Java

В этом руководстве используются два простых старых объекта Java (POJO), Person и Trip, для представления данных в таблицах PERSON и TRIP в базе данных TRAVEL. Каждый из классов указывает поля для столбцов в таблицах и использует простые методы установки и получения для извлечения и записи данных. После создания классов необходимо отобразить классы на таблицы.

Создание класса Java "Person"

  1. Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Java Class" для открытия мастера создания класса Java.
  2. В мастере введите имя класса Person и пакет travel. Нажмите кнопку "Finish".
  3. Внесите в класс следующие изменения (выделены полужирным шрифтом) для реализации интерфейса "Serializable" и добавьте поля для столбцов таблицы.
    public class Person implements Serializable {
        private int personId;
        private String name;
        private String jobTitle;
        private boolean frequentFlyer;
        private java.util.Set trips;
    }
  4. Для создания методов получения и установки для полей щелкните правой кнопкой мыши в редакторе исходного кода, выберите "Insert Code" (Alt-Insert), а затем выберите "Getter and Setter".
  5. В диалоговом окне "Generate Getters and Setters" выберите все поля и нажмите кнопку "Generate".
     Диалоговое окно "Generate Getters and Setters"

    В диалоговом окне "Generate Getters and Setters" для перемещения выбранного элемента к элементу "Person" можно использовать стрелку вверх на клавиатуре, а затем нажать клавишу "пробел" и выбрать все поля в "Person".

  6. Исправьте операторы импорта и сохраните изменения.

Создание класса Java "Trip"

  1. Щелкните правой кнопкой мыши узел "Source Packages" в окне "Projects" и выберите "New > Java Class" для открытия мастера создания класса Java.
  2. В мастере введите имя класса Trip и пакет travel. Нажмите кнопку "Finish".
  3. Внесите в класс следующие изменения (выделены полужирным шрифтом) для реализации интерфейса "Serializable" и добавьте поля для столбцов таблицы.
    public class Trip implements Serializable {
        private int tripId;
        private int personId;
        private Date depDate;
        private String depCity;
        private String destCity;
        private int tripTypeId;
    }
  4. Для создания методов получения и установки для полей щелкните правой кнопкой мыши в редакторе исходного кода, выберите "Insert Code" (Alt-Insert), а затем выберите "Getter and Setter".
  5. В диалоговом окне "Generate Getters and Setters" выберите все поля и нажмите кнопку "Generate".
  6. Исправьте операторы импорта и сохраните изменения.

Person.java и Trip.java можно закрыть, т.к. необходимость в их изменении отсутствует.

Отображение классов на таблицы базы данных

Теперь, когда созданы классы для представления таблиц, необходимо отобразить каждый класс с сохранением состояния на соответствующую таблицу с помощью файла отображения библиотеки Hibernate. Файл отображения – это файл XML, содержащий метаданные ORM, которые определяют отображение полей класса на столбцы таблицы и первичные ключи. Создадите файл отображения библиотеки Hibernate для каждого из классов.

В этом разделе используется мастер создания файлов для создания простого файла отображения библиотеки Hibernate .hbm.xml для каждого из классов. Затем необходимо изменить файл в редакторе XML для отображения поля в каждом классе на столбец в соответствующей таблице и установки дополнительных свойств. Для изменения файла отображения можно воспользоваться функцией автозавершения кода IDE.

Отображение Person.java на таблицу PERSON

Сначала создайте файл отображения библиотеки Hibernate Person.hbm.xml для отображения полей Person.java на столбцы в таблице PERSON.

  1. Запустите сервер базы данных JavaDB, если он еще не запущен.
  2. В окне "Projects" щелкните правой кнопкой мыши узел "Travel" под "Source Packages" и выберите "New > Other" в контекстном меню для открытия мастера создания файла.
  3. Выберите "Hibernate" из списка "Categories" и "Hibernate Mapping File" из списка "File Types". Нажмите кнопку "Next".
  4. Введите имя файла Person.hbm и установите папку src/java/travel. Нажмите кнопку "Next".
  5. Введите travel.Person для "Class to Map".

    Примечание: В качестве альтернативы можно нажать кнопку "Browse" и ввести "Person" в диалоговом окне "Find Type".

  6. Выберите PERSON из раскрывающегося списка "Database Table".

    Примечание: Если раскрывающийся список "Database Table" пуст, то скорее всего это означает, что база данных не запущена. Можно продолжить создание файла без указания таблицы, но в дальнейшем потребуется определить таблицу в XML.

  7. Нажмите кнопку "Finish".

    После нажатия кнопки "Finish" средой IDE создается файл Person.hbm.xml в том же самом исходном пакете, что и файл Person.java. Этот файл открывается в редакторе. По умолчанию файл XML выглядит следующим образом:

    <hibernate-mapping>
      <class dynamic-insert="false" dynamic-update="false" mutable="true"
      name="travel.Person" optimistic-lock="version" polymorphism="implicit"
      select-before-update="false" table="PERSON"/>
    </hibernate-mapping>

    Примечание: При невозможности выбрать таблицу PERSON в раскрывающемся списке при создании файла убедитесь, что к элементу class добавлена запись table="PERSON".

  8. В редакторе XML внесите следующие изменения (выделены полужирным шрифтом) для отображения идентификатора, свойств и связи "один ко многим".
    <hibernate-mapping>
      <class dynamic-insert="false" dynamic-update="false"
          mutable="true" name="travel.Person" optimistic-lock="version"
          polymorphism="implicit" select-before-update="false" table="PERSON">
            <id column="PERSONID" name="personId">
                <generator class="increment"/>
            </id>
            <property column="NAME" name="name"/>
            <property column="JOBTITLE" name="jobTitle"/>
            <property column="FREQUENTFLYER" name="frequentFlyer"/>
            <set cascade="all-delete-orphan" inverse="true" lazy="true" name="trips" table="TRIP">
                <key column="PERSONID"/>
                <one-to-many class="travel.Trip"/>
            </set>
        </class>
    </hibernate-mapping>

    Для добавления свойств и значений в редакторе XML можно воспользоваться функцией автозавершения кода. Если автозавершение кода не работает так, как показано на этом примере экрана, то см. примечание ниже.

    Пример экрана: в редакторе XML показано, как должно выглядеть автозавершение кода при отображении "Person.hbm.xml"

    Примечание: По умолчанию элемент class содержит закрывающий тег. Поскольку необходимо добавить элементы свойства между открывающим и закрывающим элементами class, то должны быть внесены следующие изменения (выделены полужирным шрифтом). После внесения изменений можно использовать автозавершение кода между элементами class.

    <hibernate-mapping>
      <class dynamic-insert="false" dynamic-update="false"
      mutable="true" name="travel.Person" optimistic-lock="version"
      polymorphism="implicit" select-before-update="false" table="PERSON">
    
      </class>
    </hibernate-mapping>
  9. Проверьте корректность XML, устраните любые обнаруженные ошибки и сохраните файл.

Отображение Trip.java на таблицу TRIP

Теперь необходимо создать файл отображения библиотеки Hibernate Trip.hbm.xml для отображения полей Trip.java на столбцы в таблице TRIP.

  1. В окне "Projects" щелкните правой кнопкой мыши узел "Travel" под "Source Packages" и выберите "New > Other" в контекстном меню для открытия мастера создания файла.
  2. Выберите "Hibernate" из списка "Categories" и "Hibernate Mapping File" из списка "File Types". Нажмите кнопку "Next".
  3. Введите имя файла Trip.hbm и укажите папку src/java/travel. Нажмите кнопку "Next".
  4. Введите travel.Trip для "Class to Map".

    Примечание: В качестве альтернативы можно нажать кнопку "Browse" и ввести "Trip" в диалоговом окне "Find Type".

  5. Выберите "TRIP" из раскрывающегося списка "Database Table".

    Примечание: Если раскрывающийся список "Database Table" пуст, то оставьте его пустым. Имя таблицы можно ввести позже в редакторе XML.

  6. Нажмите кнопку "Finish".

    После нажатия кнопки "Finish" средой IDE создается файл Trip.hbm.xml в той же самой папке, что и класс Trip.java. Этот файл открывается в редакторе.

  7. Внесите в следующие изменения в редакторе XML (выделены полужирным шрифтом).
    <hibernate-mapping>
            <class dynamic-insert="false" dynamic-update="false" mutable="true"
                name="travel.Trip" optimistic-lock="version" polymorphism="implicit"
                select-before-update="false" table="TRIP">
    	<id column="TRIPID" name="tripId">
                <generator class="increment"/>
            </id>
            <property column="PERSONID" name="personId"/>
            <property column="DEPDATE" name="depDate" type="date"/>
            <property column="DEPCITY" name="depCity"/>
            <property column="DESTCITY" name="destCity"/>
            <property column="TRIPTYPEID" name="tripTypeId"/>
        </class>
    </hibernate-mapping>

    Для добавления свойств и значений в редакторе XML воспользуйтесь функцией автозавершения кода.

  8. Проверьте корректность XML, устраните любые обнаруженные ошибки и сохраните файл.

Создание класса Hibernate Helper

Для использования библиотеки Hibernate необходимо создать класс помощника, обрабатывающий запуск и обращающийся к SessionFactory библиотеки Hibernate для получения объекта "Session", что позволяет загружать и хранить объекты "Person" и "Trip". Сначала класс помощника вызывает Configuration() для загрузки файла hibernate.properties. Затем класс вызывает configure() и загружает файл настройки hibernate.cfg.xml. Наконец, класс помощника производит сборку SessionFactory для получения объекта "Session".

В этом разделе для создания класса помощника HibernateUtil.java используется мастер создания файла.

  1. Щелкните правой кнопкой мыши исходный узел пакета travel и выберите "New > Other" для открытия мастера "New File".
  2. Выберите "Hibernate" из списка "Categories" и "HibernateUtil.java" из списка "File Types". Нажмите кнопку "Next".
  3. Введите имя класса HibernateUtil. Нажмите кнопку "Finish".
В мастере создания файла отображается процесс создания "HibernateUtil".

После нажатия кнопки "Finish" класс открывается в редакторе. Файл можно закрыть, т.к. необходимость в его изменении отсутствует.

Теперь все классы для приложения готовы. После разворачивания узла "Source Packages" в окне "Projects" проект должен выглядеть так, как показано на следующем примере экрана.

Пример экрана: окно "Projects" со структурой проекта

Создание страницы визуального веб-приложения JSF

Теперь, после создания классов, можно создать веб-страницы для отображения и изменения данных. Будет создана страница JSP, использующая инфраструктуру JSF и элементы визуального веб-приложения JSF, привязываемые к объектам.

Добавление элементов визуального веб-приложения JSF к странице

  1. Разверните папку "Web Pages" в окне "Projects" и откройте файл Page1.jsp в Visual Designer.
  2. Перетащите элемент "Drop Down List" из набора элементов "Woodstock Basic" в палитре в верхний левый угол страницы "Page1".
  3. Щелкните правой кнопкой мыши элемент "Drop Down List" и выберите "Auto-Submit on Change" в контекстном меню.

    Это действие вынуждает обозреватель передавать страницу каждый раз, когда пользователь выбирает новое значение из раскрывающегося списка.

  4. Снова щелкните правой кнопкой мыши элемент "Drop Down List" и выберите "Add Binding Attribute".

    Примечание: Указание привязок свойств будет рассмотрено далее в этом руководстве. В среде IDE NetBeans 6.1 поддерживается привязка по запросу. В тех местах, где элементы требуют написания кода Java, следует вручную добавить атрибут привязки к элементам в визуальном веб-приложении JSF. Для этого щелкните правой кнопкой мыши каждый элемент и выберите "Add Binding Attribute". Для получения дополнительных сведений см. вики-страницу On-demand Binding Attribute.

  5. Перетащите элемент "Table" под элемент "Drop Down List".
  6. Перетащите элемент "Message Group" под элемент "Table".

    Элементы "Message Group" помогают диагностировать проблемы на этапе выполнения. По умолчанию элемент "Message Group" выводит на экран сообщения об ошибках во время выполнения программы, ошибках проверки достоверности и ошибках преобразования.

  7. Сохраните изменения.

Теперь веб-страница содержит необходимые элементы. Теперь необходимо создать привязку элементов к источникам данных.

Страница с расположенными на ней элементами в редакторе в режиме проектирования

Обращение к источнику данных из SessionBean1

Теперь для получения доступа к источнику данных необходимо изменить компонент "SessionBean1". В этом упражнении для указания полей в компоненте "SessionBean1" и создания методов получения и установки для полей используется диалоговое окно "Add Property". Сеансный компонент открывает контекст сеанса и затем получает данные через объекты Java.

  1. Разверните пакет исходных файлов hibernatetravelapp в окне "Projects" и дважды щелкните SessionBean1.java для открытия файла в редакторе.
  2. Поместите курсор в пустом пространстве в исходном коде (например, справа после конструктора), щелкните правой кнопкой мыши и выберите "Insert Code > Add Property" (Ctrl-I) для открытия диалогового окна "Add Property".
  3. В диалоговом окне "Add Property" введите personOptions в поле "Name", Option[] в поле "Type" и выберите private.
  4. Выберите пункт "Generate Getters and Setters", если он еще не выбран. Нажмите кнопку "OK".
    Диалоговое окно "Add Property" во время добавления свойства "personOptions"
  5. Повторите эти действия для добавления следующих свойств:
    Name Type
    selectedPersonId Integer
    trips4Person Trip[]
    Диалоговое окно "Add Property" во время добавления свойства "selectedPersonId" Диалоговое окно "Add Property" во время добавления свойства "trips4Person"
  6. Добавьте методы buildPersonOptions и updateTrips4Person к классу путем добавления следующего кода (выделен полужирным шрифтом) к компоненту "SessionBean1" после метода getApplicationBean1.
    protected ApplicationBean1 getApplicationBean1() {
            return (ApplicationBean1) getBean("ApplicationBean1");
        }
    
    private void buildPersonOptions() {
        List<Person> personList = null;
        try{
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Person");
            personList = (List<Person>) q.list();
    
        } catch(Exception e) {
            e.printStackTrace();
        }
    
        personOptions = new Option[personList.size()];
        int i=0;
        for(Person person : personList) {
            Option opt = new Option(person.getPersonId(), person.getName());
            personOptions[i++] = opt;
        }
    }
    
    private void updateTrips4Person() {
        if(selectedPersonId == null ) {
            trips4Person = new Trip[1];
            trips4Person[0] = new Trip();
            return;
        }
    
        Set personTrips = null;
        try{
           Session session =
                    HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction tx = session.beginTransaction();
            Person person = (Person)session.load(Person.class, selectedPersonId);
            personTrips = (PersistentSet)person.getTrips();
    
        } catch(Exception e) {
            e.printStackTrace();
        }
    
        trips4Person = (Trip[]) personTrips.toArray(new Trip[0]);
    }

    Метод buildPersonOptions вызывает запрос к источнику данных "Person" и сохраняет результаты в массиве personOptions. Метод updateTrips4Person обновляет поездки для выбранного лица.

  7. Исправьте операторы импорта.
    Диалоговое окно "Fix Imports"

    Примечание: При выборе полностью определенных имен для импорта убедитесь, что выбраны библиотеки org.hibernate и com.sun.webui.jsf.model.Option и java.util.Set.

  8. Вызовите метод buildPersonOptions путем добавления следующего кода (выделен полужирным шрифтом) в конец метода init().
    @Override
    public void init() {
        super.init();
    
        try {
            _init();
        } catch (Exception e) {
            log("SessionBean1 Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }
        // Fill in the personOptions[]
        buildPersonOptions();
    
    }
  9. Вызовите метод updateTrips4Person путем добавления следующего кода (выделен полужирным шрифтом) в конец метода setSelectedPersonId.
    public void setSelectedPersonId(Integer selectedPersonId) {
        this.selectedPersonId = selectedPersonId;
        updateTrips4Person();
    }
  10. Сохраните изменения.
  11. Щелкните правой кнопкой мыши узел проекта в окне "Projects" и выберите "Build".

Привязка компонентов к данным

В этом разделе описана процедура связывания элементов "Drop Down List" и "Table" на веб-странице со свойствами, определенными в предыдущем разделе в компоненте "SessionBean1".

  1. Откройте Page1.jsp в Visual Designer.
  2. Щелкните правой кнопкой мыши элемент "Drop Down List" и выберите "Property Bindings" для открытия диалогового окна "Property Bindings".
  3. Выберите items в списке свойств "Bindable" и personOptions (под узлом "SessionBean1") в списке целевых элементов привязки. Нажмите кнопку "Apply".
    В диалоговом окне "Property Bindings" показано сопоставление элемента свойства "Binding" с целевым элементом "PersonOptions".
  4. В том же самом диалоговом окне выберите selected в списке свойств "Bindable" и selectedPersonId (под узлом "SessionBean1") в списке целей "Binding". Нажмите кнопку "Apply".
    В диалоговом окне "Property Bindings" показано сопоставление свойства "Binding", выбранного для целевого элемента "SeletPersonId".
  5. Для закрытия диалогового окна нажмите кнопку "Close".
  6. В Visual Designer щелкните правой кнопкой мыши элемент "Table" и выберите "Table Layout".
  7. В диалоговом окне выберите trips4Person (SessionBean1) из раскрывающегося списка "Get Data From".

    Примечание: Если "trips4Person" ("SessionBean1") отсутствует в раскрывающемся списке, то скорее всего сборка проекта в конце предыдущего раздела не была выполнена.

  8. Выберите personId в списке "Selected" и нажмите кнопку со стрелкой влево для перемещения поля из списка "Selected" в список "Available".
  9. Используйте кнопки со стрелками вверх и вниз для размещения оставшихся полей в порядке, показанном ниже, после чего нажмите кнопку "OK".
    Диалоговое окно "Table Layout" с последовательностью полей
  10. На панели инструментов "Editing" нажмите кнопку "Java" для открытия Page1.java в редакторе Java.
  11. В методе prerender добавьте следующий код (выделен полужирным шрифтом).
    public void prerender() {
        try {
            if (dropDown1.getSelected() == null ) {
                Option firstPerson = getSessionBean1().getPersonOptions()[0];
                getSessionBean1().setSelectedPersonId((Integer)firstPerson.getValue());
            }
        } catch (Exception ex) {
            log("Error Description", ex);
            error(ex.getMessage());
        }
    }

    Код в методе prerender вызывается до начала вывода страницы веб-обозревателем. Добавление кода к методу prerender приводит к отображению на странице информации для первого пользователя в раскрывающемся списке при первом посещении страницы пользователем.

    При первом запросе страницы обозревателем в приложении создается экземпляр Page1 и вызывается метод prerender. Сервер передает ответ (страницу HTML), и экземпляр Page1 уничтожается. Приложение не вызывает обработчик события изменения значения, поскольку события изменения значения создаются только при передаче страницы (в данном случае – при выборе нового лица).

  12. Щелкните правой кнопкой мыши в исходном коде и выберите "Fix Imports" в контекстном меню для открытия диалогового окна "Fix Imports". В раскрывающемся списке "Fully Qualified Name" выберите com.sun.webui.jsf.model.Option, как показано ниже.
    Диалоговое окно "Fix Imports"
  13. Сохраните изменения.

Выполнение проекта

  1. На основной панели инструментов выберите "Run > Run Main Project".

    В среде IDE сохраняются все измененные файлы, выполняется повторная сборка приложения и его развертывание на сервере.
  2. Выберите пользователя из раскрывающегося списка для проверки обновления содержимого таблицы данными для выбранного пользователя.
Пример экрана: готовое приложение в обозревателе

Дополнительная информация

Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by