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

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

,

Часто элемент <servlet-mapping> записывают по-другому:

<servlet-mapping>

<servlet-name>Faces Servlet</servlet-name>

<url-pattern>/faces/*</url-pattern>

</servlet-mapping>

После такого описания запросы к JSF должны выглядеть так:

sp, sp

И в первом, и во втором случае запрашиваются файлы index.jsp и login.jsp. Расширение имени файла faces в запросах первого вида сделано только для JSF, на сервере файлов с такими именами нет. Увидев в запросе имя index.faces, JSF будет искать файл index.jsp.

Для организации Вида в JSF разрабатываются библиотеки тегов. В состав JSF сейчас входят две библиотеки: core и html. Они обычно описываются на странице JSP директивами

<%@ taglib uri="" prefix="h" %>

<%@ taglib uri="" prefix="f" %>

Все теги JSF вкладываются в элемент <f:view>. Компилятор JSF просматривает и компилирует только теги, вложенные в <f:view>. Теги включаемого файла должны быть вложены в элемент <f: subview>. Это можно сделать так, как показано в листинге 27.12.

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

Создание классической страницы HTML уже не удовлетворяет ни разработчиков, ни клиентов. Набор тегов HTML невелик и фиксирован, их возможности весьма ограниченны. Уже давно придумываются разные способы оживления страниц HTML: таблицы стилей CSS, динамический HTML, апплеты. Библиотека тегов html в первую очередь призвана усилить возможности тегов HTML.

Для каждого тега HTML в JSF есть соответствующий тег, обладающий дополнительными возможностями. В листинге 27.12 показана форма с полями ввода имени и пароля и кнопкой типа Submit.

Листинг 27.12. Страница JSP с тегами библиотеки JSF

<html><head>

<%@ taglib uri="" prefix="h" %>

<%@ taglib uri="" prefix="f" %>

</head><body>

<f:view>

<f:subview id="myNestedPage">

<j sp:include page="theNestedPage.jsp" />

</f:subview>

<h:form>

<h:inputText id="name" si ze="50"

value="#{cashier.name}" required="true">

<f:valueChangeListener type="listeners.NameChanged" /> </h:inputText>

<h:inputSecret id="pswd" size="50"

value="#{cashier.pswd}"

required="true">

<f:valueChangeListener type="listeners.NameChanged" /> </h:inputSecret>

<h:commandButton type="submit" value="Отправить" action="#{cashier.submit}"/>

</h:form>

</f:view>

</body></html>

В библиотеке html есть более двух десятков тегов, соответствующих графическим компонентам пользовательского интерфейса. Кроме того, разработчик может легко создать свои, пользовательские, компоненты (custom components), расширив классы JSF. Уже создано много библиотек тегов для JSF, свободно распространяемых или коммерческих.