Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Пример simplegreeting на CDI

Пример simplegreeting иллюстрирует некоторые из основных функций CDI: области видимости, квалификаторы, инъецирование бина и доступ к Managed-бину в приложении JavaServer Faces. При запуске примера вы кликаете кнопку, которая представляет формальное или неформальное приветствие, в зависимости от того, как вы редактировали один из классов. Пример включает четыре исходных файла, страницу и шаблон Facelets и файлы конфигурации.

Здесь рассматриваются следующие темы:

Исходный код simplegreeting

Четыре исходных файла для примера simplegreeting:

Исходные файлы находятся в каталоге tut-install/examples/cdi/simplegreeting/src/main/java/javaeetutorial/simplegreeting.

Шаблон и страница Facelets

Чтобы использовать Managed-бин в простом приложении Facelets:

  1. Используйте очень простой файл шаблона и страницу index.xhtml.

    Страница шаблона template.xhtml выглядит следующим образом:

    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="en"
          xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://xmlns.jcp.org/jsf/html"
          xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
        <h:head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <h:outputStylesheet library="css" name="default.css"/>
            <title><ui:insert name="title">Default Title</ui:insert></title>
        </h:head>
    
        <body>
            <div id="container">
                <div id="header">
                    <h2><ui:insert name="head">Head</ui:insert></h2>
                </div>
    
                <div id="space">
                    <p></p>
                </div>
    
                <div id="content">
                    <ui:insert name="content"/>
                </div>
            </div>
        </body>
    </html>
  2. Чтобы создать страницу Facelets, переопределите title и head, затем добавьте небольшую форму к содержимому:

    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html lang="en"
          xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
          xmlns:h="http://xmlns.jcp.org/jsf/html">
        <ui:composition template="/template.xhtml">
    
            <ui:define name="title">Simple Greeting</ui:define>
            <ui:define name="head">Simple Greeting</ui:define>
            <ui:define name="content">
                <h:form id="greetme">
                   <p><h:outputLabel value="Enter your name: " for="name"/>
                      <h:inputText id="name" value="#{printer.name}"/></p>
                   <p><h:commandButton value="Say Hello"
                                       action="#{printer.createSalutation}"/></p>
                   <p><h:outputText value="#{printer.salutation}"/> </p>
                </h:form>
            </ui:define>
    
        </ui:composition>
    </html>

    Форма просит пользователя ввести имя. Кнопка помечена как Say Hello, и определённое для неё действие — вызвать метод createSalutation Managed-бина Printer. Этот метод, в свою очередь, вызывает метод greet определённого класса Greeting.

    Выходной текст для формы — это значение приветствия, возвращаемое set-методом. В зависимости от того, инъецирована ли версия приветствия по умолчанию или @Informal, это одно из следующих значений, где name — имя, введённое пользователем:

    Hello, name.
    
    Hi, name!

    Страница и шаблон Facelets находятся в каталоге tut-install/examples/cdi/simplegreeting/src/main/webapp/.

    Простой файл CSS, используемый страницей Facelets, находится в следующем месте:

    tut-install/examples/cdi/simplegreeting/src/main/webapp/resources/css/default.css

Запуск примера simplegreeting

Вы можете использовать IDE NetBeans или Maven для сборки, упаковки, развёртывания и запуска приложения simplegreeting.

Здесь рассматриваются следующие темы:

Сборка, упаковка и запуск simplegreeting с IDE NetBeans

  1. Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).

  2. В меню Файл выберите Открыть проект.

  3. В диалоговом окне Открыть проект перейдите к:

    tut-install/examples/cdi
  4. Выберите каталог simplegreeting.

  5. Нажмите Открыть проект.

  6. Чтобы изменить файл Printer.java, выполните следующие действия:

    1. Разверните узел Исходные пакеты.

    2. Разверните узел greetings.

    3. Выполните двойной клик на файле Printer.java.

    4. В редакторе закомментируйте аннотацию @Informal:

      @Inject
      //@Informal
      Greeting greeting;
    5. Сохраните файл.

  7. На вкладке Проекты кликните правой кнопкой мыши проект simplegreeting и выберите Сборка.

    Эта команда собирает и упаковывает приложение в WAR-файл simplegreeting.war, расположенный в каталоге target, а затем развёртывает его на сервере GlassFish.

Сборка, упаковка и развёртывание simplegreeting с использованием Maven

  1. Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).

  2. В окне терминала перейдите в:

    tut-install/examples/cdi/simplegreeting/
  3. Введите следующую команду для развёртывания приложения:

    mvn install

    Эта команда собирает и упаковывает приложение в WAR-файл simplegreeting.war, расположенный в каталоге target, а затем развёртывает его на сервере GlassFish.

Запуск simplegreeting

  1. В веб-браузере введите следующий URL:

    http://localhost:8080/simplegreeting

    Откроется страница Простое приветствие.

  2. Введите имя в поле.

    Для примера предположим, что вы вводите Duke.

  3. Нажмите Say Hello.

    Если вы не изменили файл Printer.java, то под кнопкой появится следующая текстовая строка:

    Hi, Duke!

    Если вы закомментировали аннотацию @Informal в файле Printer.java, то под кнопкой появится следующая текстовая строка:

    Hello, Duke.

Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)