объявить директивы JSP taglib в web.xml - PullRequest
13 голосов
/ 22 октября 2008

Кажется, я помню, что читал, что можно объявить директивы taglib, такие как:

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

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

Ответы [ 2 ]

27 голосов
/ 23 октября 2008

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

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

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

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

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

Если у вас есть настраиваемая библиотека тегов в пользовательском расположении, вы также можете указать местоположение относительно корня веб-приложения:

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

Дополнительная информация о директиве taglib

Директива taglib из web.xml отображает тег Uris на физическое местоположение вашей библиотеки тегов. Начиная с 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.

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

5 голосов
/ 22 октября 2008

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

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

...