Объявлять директивы taglib JSP в web.xml

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

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

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

Ответы

Ответ 1

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

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

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

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

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

Если у вас есть пользовательский taglib в настраиваемом месте, вы также можете указать местоположение относительно корня webapp:

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

Дальнейшее чтение директивы taglib

Директива 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.

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

Ответ 2

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

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