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

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

Значения атрибутов, являющихся фрагментами страниц JSP, и тело пользовательского тега не вычисляются Web-контейнером, а передаются tag-файлу.

Для того чтобы заставить Web-контейнер выполнить значение атрибута, являющегося фрагментом страницы JSP, в tag-файле нужно использовать стандартный тег <jsp:invoke>. Пусть, например, атрибут price описан следующим образом:

<%@ attribute name="price"

fragment="true"

%>

Для вычисления его значения Web-контейнером в tag-файле следует написать:

<jsp:invoke fragment="price"/>

Если же надо заставить Web-контейнер выполнить не фрагмент, а все тело пользовательского тега, то в tag-файле записывается стандартный тег <j sp:doBody/>.

Tag-файлы не требуют никакого TLD-описания, если файл, содержащий страницу-обработчик пользовательского тега, хранится в каталоге WEB-INF/tags/ или в его подкаталогах. Другое место хранения tag-файлов должно быть описано в TLD-файле элементом <tag-file>. Например:

<taglib>

<tag-file>

<name>info</name>

<path>/WEB-INF/sdo/tags/info.tag</path>

</tag-file>

</taglib>

Если Web-приложение упаковано в JAR-архив, то tag-файлы должны храниться в каталоге META_INF/tags/ архива или в его подкаталогах.

Стандартные библиотеки тегов JSTL

Несмотря на недолгую историю языка JSP, его возможность создания пользовательских тегов была использована многими фирмами и отдельными разработчиками. Уже создано множество библиотек пользовательских тегов. Их обзор можно посмотреть, например, на сайте . В рамках уже не раз упоминавшегося проекта Jakarta создана мощная и широко применяемая библиотека пользовательских тегов Struts, которую можно скопировать с сайта . К сожалению, рамки нашей книги не позволяют дать ее описание.

Корпорация Sun Microsystems создала стандартные библиотеки пользовательских тегов, носящие общее название JSTL (JSP Standard Tag Library). Их реализации составляют пакет javax.servlet.jsp.jstl и его подпакеты. Справку о том, где найти самую последнюю реализацию, можно получить по адресу java/index-jsp-135995.html. Впрочем, библиотеки JSTL входят в стандартную поставку

Java EE SDK. Всю библиотеку JSTL составляют два JAR-архива: jstl-1.2.jar и standard. j ar. Номер версии JSTL, конечно, может быть другим.

В пакет JSTL входят пять библиотек пользовательских тегов: core, xml, fmt, sql и fn.

Библиотека core

Библиотека core описывается на странице JSP тегом

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

В нее входят теги, создающие подобие языка программирования. Они призваны заменить операторы Java, тем самым устраняя скриптлеты со страниц JSP.

Тег <c:out> выводит значение своего обязательного атрибута value в выходной поток out. Если оно пусто, то будет выведено значение атрибута default, если, конечно, этот атрибут написан.