Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 449

Ильдар Шаукатович Хабибуллин

Главная особенность библиотеки html заключается в том, что ее составляют не просто теги, а целые компоненты. Компоненты JSF реагируют на события мыши и клавиатуры, которые могут быть обработаны обычными средствами JavaScript или специальными средствами JSF. Для этого введены теги-обработчики событий. Один такой тег, <v:valueChangeListener>, показан в листинге 27.12. Надо сказать, что разработчики тегов библиотеки html сознательно ориентировались на компоненты Swing, стараясь, по мере возможности, наделить теги такими же свойствами. В частности, компоненты JSF можно размещать на форме, пользуясь подходящим IDE. Это "умеет" делать, например, Java Studio Creator.

Форма, записанная в листинге 27.12, посылает на сервер имя и пароль, связанные с полями cashier.name и cashier.pswd атрибутом value. Что это за поля и какому объекту cashier они принадлежат?

Данные, полученные от HTML-формы, будут храниться в объекте, класс которого должен написать разработчик Web-приложения. Этот класс оформляется как JavaBean, чтобы JSF мог заполнять и читать его поля методами доступа. Он будет частью Модели в схеме MVC. Класс для хранения имени и пароля, полученных от формы листинга 27.12, показан в листинге 27.13.

Листинг 27.13. Класс с данными HTML-формы j

package myjsf;

import javax.faces.bean.*;

@ManagedBean(name="cashier")

@RequestScoped public class Cashier{

private String name; private String pswd;

public String getName(){ return name; }

public void setName(String name){ this.name = name; }

public String getPswd(){ return pswd; }

public void setPswd(String pswd){ this.pswd = pswd; }

public String submit(){

if ("Cashier".equalsIgnoreCase(name) && "rT34?x D".equals(pswd))

return "success"; else

return "failure";

}

}

Как видите, в этом же классе записан метод обработки щелчка по кнопке Отправить.

Теперь надо каким-то образом указать JSF этот класс. Сведения о нем записываются в аннотациях или в конфигурационном XML-файле faces-config.xml, который должен храниться в каталоге WEB-INF вместе с файлом web.xml. Этот файл для нашего примера записан в листинге 27.14.

Листинг 27.14. Конфигурационный файл JSF

<?xml version='1.0' encoding='UTF-8'?>

<faces-config xmlns=" avaee"

xmlns:xsi="" xsi:schemaLocation=" 1 2.xsd" version="1.2">

<managed-bean>

<description>

Класс-обработчик регистрации кассира

</description>

<managed-bean-name>cashier</managed-bean-name>

<managed-bean-class>myjsf.Cashier</managed-bean-class>

<managed-bean-scope>request</managed-bean-scope>

</managed-bean>

<navigation-rule>

<from-view-id>/index.j sp</from-view-id>

<navigation-case>

<description>

После удачной проверки переход на страницу welcome.jsp