我有一个包含标签的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文件?
答案 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>