TLD文件能否从WEB-INF\lib\{*.jar}\META-INF\resources\WEB-INF目录访问?

3

我有一个包含如下标签的jsp文件:

<%@ taglib prefix="abc" uri="/WEB-INF/tlds/xyz.tld" %>

在我的应用程序中,部署结构如下:

WEB-INF
  |-lib
      |-some.jar
          |-META-INF
              |-resources
                  |-WEB-INF
                      |-tlds
                          |-xyz.tld

在Tomcat 7中这个功能运行良好,但是当我将应用部署到JBoss as 7时,它无法找到tld文件。

所以,这是JBoss的问题(不支持Servlet3.0?)还是tld文件无法从jar包中的META-INF\resources\WEB-INF目录中访问?


请问您能否在此处发布错误堆栈? - Sariq Shaikh
1个回答

4
这不是Servlet 3.0问题,而是一个JSP 2.2的问题(它们是不同的规范)。
标签库声明中的“uri”部分不是一个位置,而是一个键,必须与内容相对应。
<uri>your/tld/uri</uri>

在 tld 文件中的元素。

如果缺少此元素,则必须在 web.xml 中的 taglib 映射中声明它,并提供 uri:

<jsp-config>
     <taglib>
         <taglib-uri>/WEB-INF/tlds/xyz.tld</taglib-uri>
         <taglib-location>/WEB-INF/lib/some.jar/META-INF/resources/WEB-INF/tlds/xyz.tld</taglib-location>
     </taglib>
</jsp-config>

另一种可行的解决方案:在TLD文件中声明元素<uri>your/tld/uri</url>,而不是在web.xml的映射中。 - BobMcGee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接