无效的tld文件,但它是文件名



我正在SpringBoot下创建一个自定义标签库。我的taglib标签是:

<%@taglib prefix="ttl" uri="/WEB-INF/tags/resourceBundle.tld" %>

我根据许多可用的来源创建了一个TLD文件,并将其放置在/WEB-INF/tags/resourceBundle.TLD中,这是带有uri标签的部分

<taglib>
<uri>/WEB-INF/tags/resourceBundle.tld</uri>
...

但当我引用标签库时,我收到了这个错误消息:

org.apache.jasper.JasperException: Invalid tld file: [/WEB-INF/tags/resourceBundle.tld], see JSP specification section 7.3.1 for more details

但是,我不相信它会被读取,因为它在TagLibraryInfoImpl::generateTeldResourcePath((@281:中被确定为无效

if (uri.endsWith(".jar")) {
// snip
} else if (uri.startsWith("/WEB-INF/lib/") || uri.startsWith("/WEB-INF/classes/") ||
(uri.startsWith("/WEB-INF/tags/") && uri.endsWith(".tld")&& !uri.endsWith("implicit.tld"))) {
err.jspError("jsp.error.tld.invalid_tld_file", uri);
}

代码结束于最后一个err.jsp错误行:

err.jspError("jsp.error.tld.invalid_tld_file", uri);

基本上,如果URI以"0"开头/WEB-INF/标签";(正如许多消息来源所说的是强制性的(并且以"结尾;。tld";,但不是";隐含.tld";,则tld文件是";无效"-这个结论是在没有打开文件的情况下得出的。

我已更改<%@taglib%>uri引用一个不存在的文件,并通过代码从相同的路径获得相同的错误消息(如上(。

我已经阅读了很多关于这个主题的文章,并回顾了一个旧项目,在这个项目上我使用了自定义标签库(但它使用了ANT和Spring,我使用的是Maven和SpringBoot(,我不知道如何识别我的标签库。

有人能告诉我我做错了什么吗?

JSP 2.1规范规定:

TLD文件不应放在/WEB-INF/classes或/WEB-IINF/lib中,和不得放置在/WEB-INF/tags或其子目录中,除非命名为implict.tld.

我建议使用另一个目录。

相关内容

  • 没有找到相关文章

最新更新