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

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

Пример compositecomponentexample

Приложение compositecomponentexample создаёт составной компонент, который принимает имя (или любую другую строку). Компонент взаимодействует с Managed-бином, который вычисляет, является ли сумма букв в имени после их преобразования в числовые значения, простым числом. Компонент отображает сумму значений букв и сообщает, является ли она простым числом или нет.

Приложение compositecomponentexample содержит файл составного компонента, страницу использования и Managed-бин.

Исходный код для этого приложения находится в каталоге tut-install/examples/web/jsf/compositecomponentexample/ .

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

Файл составного компонента

Файл составного компонента представляет собой XHTML-файл /web/resources/ezcomp/PrimePanel.xhtml. Он имеет раздел composite:interface, который объявляет метки для имени и кнопки команд. Он также объявляет Managed-бин, который определяет свойства для имени.

<composite:interface>
    <composite:attribute name="namePrompt"
                         default="Name, word, or phrase: "/>
    <composite:attribute name="calcButtonText" default="Calculate"/>
    <composite:attribute name="calcAction"
                         method-signature="java.lang.String action()"/>
    <composite:attribute name="primeBean"/>
    <composite:editableValueHolder name="nameVal" targets="form:name"/>
</composite:interface>

Реализация составного компонента принимает введённое значение для свойства name Managed-бина. Тег h:outputStylesheet определяет таблицу стилей как перемещаемый ресурс. Затем реализация указывает формат вывода, используя свойства Managed-бина, а также формат сообщений об ошибках. Значение суммы отображается только после того, как оно было рассчитано, а отчёт о том, является ли сумма простой или нет, отображается только при валидации введённого значения.

<composite:implementation>
    <h:form id="form">
        <h:outputStylesheet library="css" name="default.css"
                            target="head"/>
        <h:panelGrid columns="2" role="presentation">
            <h:outputLabel for="name"
                           value="#{cc.attrs.namePrompt}"/>
            <h:inputText id="name"
                         size="45"
                         value="#{cc.attrs.primeBean.name}"
                         required="true"/>
        </h:panelGrid>
        <p>
            <h:commandButton id="calcButton"
                             value="#{cc.attrs.calcButtonText}"
                             action="#{cc.attrs.calcAction}">
                <f:ajax execute="name" render="outputGroup"/>
            </h:commandButton>
        </p>

       <h:panelGroup id="outputGroup" layout="block">
            <p>
                <h:outputText id="result" style="color:blue"
                              rendered="#{cc.attrs.primeBean.totalSum gt 0}"
                              value="Sum is #{cc.attrs.primeBean.totalSum}" />
            </p>
            <p>
                <h:outputText id="response" style="color:blue"
                              value="#{cc.attrs.primeBean.response}"
                              rendered="#{!facesContext.validationFailed}"/>
                <h:message id="errors1"
                           showSummary="true"
                           showDetail="false"
                           style="color: #d20005;
                           font-family: 'New Century Schoolbook', serif;
                           font-style: oblique;
                           text-decoration: overline"
                           for="name"/>
            </p>
        </h:panelGroup>
    </h:form>
</composite:implementation>

Страница использования

Страница использования в этом примере приложения, web/index.xhtml, представляет собой XHTML-файл, который вызывает файл составного компонента PrimePanel.xhtml вместе с Managed-бином. Это валидирует ввод пользователя.

<div id="compositecomponent">
    <ez:PrimePanel primeBean="#{primeBean}"
                   calcAction="#{primeBean.calculate}">
    </ez:PrimePanel>
</div>

Managed-бин

Managed-бин PrimeBean.java определяет метод с именем calculate, который выполняет вычисления для введённой строки и соответственно устанавливает свойства. Сначала бин создаёт массив простых чисел. Он вычисляет сумму букв в строке, где 'a' равно 1 и 'z' равно 26, и определяет, можно ли найти значение в массиве простых чисел. Заглавная буква во введённой строке имеет то же значение, что и её строчный эквивалент.

Компонент определяет минимальный и максимальный размер строки name, которая обеспечивается ограничением @Size Bean Validation. Бин использует аннотацию @Model, объединяющую @Named и @RequestScoped, как описано в шаге 7 из Просмотр веб-модуля hello1 в IDE NetBeans.

@Model
public class PrimeBean implements Serializable {
    ...
    @Size(min=1, max=45)
    private String name;
    ...

    public String calculate() {
        ...
    }
}

Запуск compositecomponentexample

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

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

Сборка, упаковка и развёртывание compositecomponentexample в IDE NetBeans

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

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

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

    tut-install/examples/web/jsf
  4. Выберите каталог compositecomponentexample.

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

  6. На вкладке «Проекты» кликните правой кнопкой мыши проект compositecomponentexample и выберите «Сборка».

    Эта команда собирает и развёртывает приложение.

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

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

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

    tut-install/examples/web/jsf/compositecomponentexample/
  3. Введите следующую команду, чтобы собрать и развернуть приложение:

    mvn install

Запуск compositecomponentexample

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

    http://localhost:8080/compositecomponentexample
  2. На появившейся странице введите строку в поле Имя, слово или фразу, затем нажмите Рассчитать.

    Страница сообщает сумму букв и является ли эта сумма простой. Ошибка проверки выдается, если значение не введено или строка содержит более 45 символов.


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