今天遇到這樣一個問題,使用JAVA做了個WEB應用,其中用到一個自定義標簽。該標簽的class文件與tld(tld文件中,uri定義為:http://wallimn.iteye.com/myfuncs)文件放在一起,
jsp頁面中的引用方式為:
<%@ taglib prefix="wlm" uri="http://wallimn.iteye.com/myfuncs" %>
開始一直直接使用class文件,沒有打jar包,運行的時候沒有任何問題。
后來把應用部署到internet上,發現使用該標簽的頁面全部不能正常顯示,我通過把兩處的uri定義修改成非網址形式(wallimn:functions)把問題解決了,不過我沒有搞清楚原因。希望讀到此文的達人能指點一下。
再后來,我把所有的class文件,打成jar包,以jar的形式部署到WEB應用中,又出現了新的問題,原來能找到的tld文件找不到了。通過以絕對地址方式引用標簽解決了這個問題。
即:
<%@ taglib prefix="wlm" uri="/WEB-INF/myfuncts.tld" %>
當然,要把myfuncts.tld放在對應的位置。
jar包與tld文件分開,不利於程序的部署、jar包重用。如何能把tld文件與class文件一起打到jar包中、且能正常運行呢?
分析了一下displaytag-1.2.jar的文件結構,發現它的tld文件是放在jar包中的META-INF目錄中的。我打包時,也把tld文件放到META-INF目錄中,測試運行,OK。
http://wallimn.iteye.com/blog/546860