在web.xml中声明JSP taglib指令

时间:2008-10-22 16:11:20

标签: java jsp jsp-tags

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

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

。这消除了在使用taglib的每个JSP文件中复制此指令的需要。有人可以告诉我如何这些指令可以添加到web.xml吗?

2 个答案:

答案 0 :(得分:27)

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

正如David所说,每页都需要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

web.xml中的taglib指令将标记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>

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

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

这相当于我为上面的taglib指令提供的第二个例子。最大的区别在于你如何指向taglib位置。

This page包含更多信息。

答案 1 :(得分:5)

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

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