我正在 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::generateTldResourcePath()@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.jspError 行結束:
err.jspError("jsp.error.tld.invalid_tld_file", uri);
基本上,如果 URI 以“/WEB-INF/tags”開頭(許多來源說是強制性的)并以“.tld”結尾,而不是“implicit.tld”,那么 tld 檔案是“無效的”——這個結論甚至無需打開檔案即可到達。
我已將 <%@taglib%> uri 更改為參考不存在的檔案,并通過代碼(上圖)從同一路徑獲取相同的錯誤訊息。
我已經閱讀了許多關于該主題的文章,并查看了一個舊專案,在該專案上我使用了自定義標簽庫(但它使用了 ANT 和 Spring,我使用的是 Maven 和 SpringBoot),但我不知道如何識別我的標簽庫。
有人可以告訴我我做錯了什么嗎?
uj5u.com熱心網友回復:
在JSP 2.1規范規定:
TLD 檔案不應放置在 /WEB-INF/classes 或 /WEB-INF/lib 中,并且不得放置在 /WEB-INF/tags或其子目錄中,除非命名為hidden.tld。
我建議使用另一個目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/354352.html
