可以从WEB-INF \ lib \ {*。jar} \ META-INF \ resources \ WEB-INF目录访问tld文件吗?

时间:2014-09-09 08:16:48

标签: java jboss taglib servlet-3.0

我有一个包含标签的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 7时,它找不到tld文件。

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

1 个答案:

答案 0 :(得分:4)

这不是Servlet 3.0的问题,它是一个JSP 2.2问题。 (他们有不同的规格)。

taglib声明的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>