JSP - 两个具有相同URI的tld文件 - Container如何解决冲突?

时间:2013-01-29 16:39:15

标签: jsp jsp-tags taglib tld

我在.tld下定义了两个WEB-INF文件,但两者都有相同的<URI>“XYZ”

我在JSP <%@ taglib prefix="mine" uri="XYZ" %>"中声明了。

容器如何解决关于要读取哪个tld文件以获取函数类和函数定义的歧义?

编辑:我在Tomcat 7中运行它并没有抛出异常。

1 个答案:

答案 0 :(得分:2)

它将加载在classpath中找到的第一个匹配项。该顺序依赖于JVM和OS(并且基本上是任意的)。您不想依赖它,您应该修复.tld URI。

如果这代表一个真实世界的问题并且taglib代码在你的控制范围之外(然而这很奇怪,谁会复制现有taglib的URI?你真的拥有另一个taglib的域吗?),那么你可以始终在webapp的web.xml中重新定义taglib URI,如下所示:

<taglib>
    <taglib-uri>http://www.example.com/foo</taglib-uri>
    <taglib-location>/WEB-INF/foo.tld</taglib-location>
</taglib>
<taglib>
    <taglib-uri>http://www.example.com/bar</taglib-uri>
    <taglib-location>/WEB-INF/bar.tld</taglib-location>
</taglib>