JSP.7.3.6 Определение Ресурса Пути TLD
Путь ресурса TLD может быть определён из атрибута uri директивы taglib, как показано ниже. В последующем разъяснении “абсолютным URI” называется такой, который начинается с названия протокола и имени хоста, а “относительный URI” даётся так, как указано в , т.е. без протокола и имени хоста.
Все шаги описаны так, будто они выполнялись, но реализация может использовать различные стратегии для получения того же результата.
JSP.7.3.6.1 Вычисление Размещения TLD
Карта taglib, генерированная в Разделах и , может содержать одно или более вхождений <taglib></taglib>. Каждое такое вхождение идентифицируется по TAGLIB_URI, который является значением субэлемента <taglib-uri>. Этот TAGLIB_URI может быть абсолютным URI, либо относительным URI, который начинается (или не начинается) с “/”.
Каждое вхождение определяет также TAGLIB_LOCATION следующим образом:
Если субэлемент <taglib-location> это относительный URI, начинающийся с “/”, то TAGLIB_LOCATION является этим URI.
Если субэлемент <taglib-location> это относительный URI, не начинающийся с “/”, то TAGLIB_LOCATION является разрешением этого URI относительно /WEB-INF/web.xml (результатом этого разрешения является относительный URI, начинающийся с “/”).
JSP.7.3.6.2 Вычисление Ресурса Пути TLD
Здесь показано, как разрешить директиву taglib для вычисления пути ресурса TLD на базе значения атрибута uri директивы taglib.
Если uri является ABS_URI, абсолютным URI. Идёт поиск в карте taglib вхождения, чей TAGLIB_URI является ABS_URI. Если он найден, соответствующее TAGLIB_LOCATION является путём ресурса TLD. Если он не найден, возникает ошибка трансляции.
Если uri является ROOT_REL_URI, относительным URI, начинающимся с “/”. Идёт поиск в карте taglib вхождения, чей TAGLIB_URI является ROOT_REL_URI. Если он найден, соответствующее TAGLIB_LOCATION является путём ресурса TLD. Если он не найден, ROOT_REL_URI
является путём ресурса TLD.
Если uri является NOROOT_REL_URI, относительным URI, не начинающимся с “/”. Идёт поиск в карте taglib вхождения, чей TAGLIB_URI является NOROOT_REL_URI. Если он найден, соответствующее TAGLIB_LOCATION является путём ресурса TLD. Если он не найден, NOROOT_REL_URI разрешается относительно текущей JSP-страницы, где появилась директива; это значение (по определению, это спецификация относительного URI, начинающегося с “/”) является путём ресурса TLD.
JSP.7.3.6.3 Рассмотрение Использования
Явное отображение web. xml предоставляет явное описание библиотек тэгов, используемых в web-приложении.
Неявное отображение из TLDs означает, что JAR-файл, реализующий библиотеку тэгов, может быть раскрыт и использован непосредственно через его постоянные URI.
Использование относительного URI в карте taglib даёт возможность задания очень кратких имён в директиве taglib. Например, если карта:
<taglib>
<taglib-uri>/myPRlibrary</taglib-uri>
<taglib-location>/WEB-INF/tlds/PRlibrary_1_4.tld</taglib-location>
</taglib>
тогда она может использоваться как:
<%@ taglib uri=”/myPRlibrary” prefix=”x” %>
Наконец, правило отката/fallback (запасной вариант) позволяет директиве taglib ссылаться непосредственно к TLD. Это чрезвычайно хорошо подходит для ускоренной разработки в ущерб гибкости и экономии.
Например, в предыдущем случае оно делает возможным:
<%@ taglib uri=”/WEB-INF/tlds/PRlibrary_1_4.tld” prefix=”x” %>