2008-10-22 2 views
13

Кажется, я помню, как читал, что можно объявить директивы TagLib, такие как:DECLARE директивы JSP TagLib в web.xml

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

в web.xml. Это устраняет необходимость дублирования этой директивы в каждом файле JSP, где используется taglib. Может ли кто-нибудь сказать мне , как эти директивы могут быть добавлены в web.xml?

+1

Жаль, потому что есть решение для этого: прелюдии. Используя элемент jsp-property-group секции jsp-config и дочерний элемент include-prelude, вы можете назначить фрагмент, который будет включен в любой JSP в соответствии с вашим собственным регулярным выражением. Вы можете просто указать любые директивы taglib, которые вы хотите там. – nitind 2008-10-31 22:45:16

+6

Этот вопрос не обязательно должен быть закрыт как не по теме. – 2012-04-13 15:37:09

ответ

27

Элемент taglib в web.xml выполняет другую задачу в директиве taglib, которую вы имеете выше.

Как сказал Дэвид, на каждой странице требуется директива taglib.

Если у вас есть много страниц, которые используют общие теги taglib, вы можете сократить это, поставив директивы taglib во включенный файл и включив этот файл на каждую страницу. Но независимо от того, как вы это делаете, директива taglib должна быть на странице каким-то образом.

Этот тег вам необходимо включить на каждой странице выглядит следующим образом:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

Если у вас есть собственный TagLib в другое место, вы можете также указать местоположение по отношению к корню WebAPP:

<%@ taglib prefix="ex" uri="/taglib.tld" %> 

Further reading on the taglib directive

taglib директива web.xml карты тега URIS на физическое расположение вашего TagLib. Это необязательно, поскольку JSP 2.0, поскольку совместимые контейнеры будут выглядеть в наборе стандартных местоположений, чтобы попытаться автоматически обнаружить taglib:/WEB-INF и его подкаталоги/META-INF, а также для JAR-файлов.

Похоже, что это, в web.xml:

<taglib> 
    <taglib-uri> 
    http://www.example.com/taglib 
    </taglib-uri> 
    <taglib-location> 
    /taglib.tld 
    </taglib-location> 
</taglib> 

И TagLib ссылается на страницу JSP, как это (директива TagLib на каждой странице неизбежна!):

<%@ taglib prefix="ex" uri="http://www.example.com/taglib" %> 

Это эквивалентно второму примеру, указанному выше для директивы taglib. Самое большое различие заключается в том, как вы указываете местоположение taglib.

This page содержит немного больше информации.

5

Извините, вы слегка ошибаетесь. Если на странице используется taglib, для этого на странице должна быть указана taglib. Вы можете разместить общие директивы taglib в включенном файле, который включает все ваши страницы с директивой include, но во время компиляции должна быть указана директива taglib.

Я предпочитаю НЕ иметь элементы taglib в web.xml, и вместо этого директива taglib указывает значение URI, которое используется в элементе «uri» в TLD, который находится внутри файла jar-файла taglib в вашей веб-странице -INF/Lib.

+0

Каков подход, если я использую плитки Apache. Нужно ли мне следовать за тем же, чтобы включить директивы taglib. Я попытался определить директивы taglib в базовом шаблоне jsp. Но я не могу получить ссылку на них в jsp, например в заголовке, нижнем колонтитуле и другом jsp, которые настроены с базовым шаблоном jsp. – srinivas 2015-11-03 06:30:49

Смежные вопросы