我有一個正在從Tomcat 5.5.35遷移到Tomcat 7.0.39的Web應用程序。目前,有幾個自定義標籤庫,每個都在其自己的tld
文件中定義。這裏有一個例子:信息:TLD跳過。 URI:<tag name URI>已定義
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>customTag</short-name>
<uri>http://www.something.com/util/customTag-db-taglib</uri>
<description>
Database tag library for Util
</description>
<tag>
<name>useBean</name>
<tag-class>com.mx.releasemgr.tags.db.UseBeanTag</tag-class>
<tei-class>com.mx.releasemgr.tags.db.UseBeanTEI</tei-class>
<body-content>EMPTY</body-content>
<attribute>
<name>id</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>oid</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>oidParameter</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>type</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>scope</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
...
</taglib>
有恰恰是在WEB-INF
文件夾這個TLD文件的一個副本。它從未被放入jar
文件中。
的web.xml
看起來是這樣的:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
...
<jsp-config>
<taglib>
<taglib-uri>customTag</taglib-uri>
<taglib-location>/WEB-INF/customTag.tld</taglib-location>
</taglib>
</jsp-config>
...
此錯誤是顯示在catalina.out
Apr 11, 2013 3:50:08 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://www.mx.com/releasemgr/releasemgr-db-taglib is already defined
了標籤庫是進口的,像這樣:
<%@ taglib uri="customTag" prefix="db" %>
我有看着this question但它似乎並不適用。我已經添加了<jsp-config>
,它沒有幫助。我是否稱taglib錯誤? URI參數是否正確?任何幫助表示讚賞。通過規範所要求的URI
您可以嘗試從web.xml中刪除整個' .. '節並查看它是否仍然可以找到taglib。如果是這樣,它被定義在你不知道的地方。 –
2013-04-11 20:45:30
我這樣做是通過刪除已經在jar文件和WEB-INF中定義的tld文件。這消除了錯誤,但現在我的JSP頁面變成純文本了嗎? – Bizmarck 2013-04-12 13:58:12
您需要將tld文件放在jar中的一個或war中的WEB-INF中,或者在最近版本的JSP中的web.xml中引用。只是一個地方,但。 – 2013-04-12 16:38:49