在 Web 中声明 JSP taglib 指令.xml

2022-09-04 06:36:44

我似乎记得读过,可以声明taglib指令,例如:

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

在网络.xml。这样就无需在使用 taglib 的每个 JSP 文件中复制此指令。有人可以告诉我如何将这些指令添加到web.xml?


答案 1

web.xml中的元素与您上面的指令具有不同的用途。taglibtaglib

正如David所说,该指令在每一页上都是必需的。taglib

如果有许多页面使用常见的 taglib,则可以通过将 taglib 指令放入包含文件中并在每个页面中都包含此文件来缩短此快捷方式。但无论你如何做,taglib指令都必须以某种方式出现在页面上。

您需要在每个页面上包含的标记如下所示:

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

如果您在自定义位置有自定义 taglib,则还可以指定相对于 webapp 根目录的位置:

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

进一步阅读 taglib 指令

来自 web.xml 的指令将 tag uris 映射到 taglib 的物理位置。从 JSP 2.0 开始,它是可选的,因为兼容容器将在一组标准位置查找,以尝试自动发现 taglib:/WEB-INF 及其子目录,/META-INF 以及 JAR 文件。taglib

在 web 中,它看起来像这样.xml:

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

在JSP页面中引用taglib是这样的(每个页面上的taglib指令是不可避免的!

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

这等效于我为上面的 taglib 指令给出的第二个示例。最大的区别在于如何指向 taglib 位置。

本页包含更多信息。


答案 2

抱歉,您稍有误会。如果页面使用 taglib,则必须在页面上为其提供 taglib 指令。您可以将常见的 taglib 指令放在一个包含文件中,所有页面都包含一个 include 指令,但在编译时,taglib 指令必须在那里。

我更喜欢不要在web中使用taglib元素.xml,而是让taglib指令指定在TLD中的“uri”元素中使用的URI值,该元素位于WEB-INF / lib的taglib jar文件中。