13

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

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

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

4

2 回答 2

27

taglibweb.xml 中的元素与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 中的taglib指令将标记 uris 映射到标记库的物理位置。从 JSP 2.0 开始它是可选的,因为兼容的容器将在一组标准位置中查找以尝试自动发现标记库:/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 位置的方式。

此页面包含更多信息。

于 2008-10-23T03:21:52.423 回答
5

对不起,你有点误会了。如果页面使用 taglib,则必须在页面上有一个 taglib 指令。您可以将常见的 taglib 指令放在一个包含文件中,您的所有页面都使用 include 指令包含该文件,但在编译时 taglib 指令必须在那里。

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

于 2008-10-22T16:31:44.543 回答