我似乎记得读过可以声明 taglib 指令,例如:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
在 web.xml 中。这消除了在每个使用 taglib 的 JSP 文件中复制该指令的需要。有人可以告诉我如何将这些指令添加到 web.xml 中吗?
taglib
web.xml 中的元素与taglib
您上面的指令有不同的用途。
正如大卫所说,taglib
每一页都需要该指令。
如果您有许多使用通用标签库的页面,您可以通过将标签库指令放入包含文件中来简化此操作,并在每个页面中包含该文件。但不管你怎么做,taglib 指令必须以某种方式出现在页面上。
您需要在每个页面上包含的标签如下所示:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
如果您在自定义位置有自定义 taglib,您还可以指定相对于 webapp 根目录的位置:
<%@ taglib prefix="ex" uri="/taglib.tld" %>
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 位置的方式。
此页面包含更多信息。
对不起,你有点误会了。如果页面使用 taglib,则必须在页面上有一个 taglib 指令。您可以将常见的 taglib 指令放在一个包含文件中,您的所有页面都使用 include 指令包含该文件,但在编译时 taglib 指令必须在那里。
我更喜欢不在 web.xml 中包含 taglib 元素,而是让 taglib 指令指定在 WEB-INF/lib 中 taglib jar 文件内的 TLD 中的“uri”元素中使用的 URI 值.