Читать «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 есть более двух десятков тегов, соответствующих графическим компонентам пользовательского интерфейса. Кроме того, разработчик может легко создать свои,