正确的.tld文件头

时间:2011-11-24 16:44:58

标签: java jsp taglib

我想创建自定义标记,但我在JSPVersion行上得到“XML解析错误”。我检查我的JSP版本,正好是2.1。我认为链接错误。

<?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/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<tlib-version>1.0</tlib-version>

<jsp-version>2.1</jsp-version>

任何人都可以帮助我吗?感谢

UPD / ERROR MESSAGE:org.apache.jasper.JasperException:无法初始化TldLocationsCache:org.apache.jasper.JasperException:文件/WEB-INF/tlds/tag.tld上的XML解析错误:(第11行,col 2)

2 个答案:

答案 0 :(得分:13)

您在DTD的风格中使用旧的JSP 1.2标记库声明。您需要删除它(以及<jsp-version>)并使用新的JSP 2.1 XSD声明:

<?xml version="1.0" encoding="UTF-8" ?>
<taglib
    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/web-jsptaglibrary_2_1.xsd"
    version="2.1">

    <!-- Taglib config here -->
</taglib>

确保您正在阅读JSP 2.1的正确书籍/教程,而不是JSP 1.2。

另见:

答案 1 :(得分:2)

您的DOCTYPE不正确吗?请尝试以下方法:

<?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">

N.B。如果您确实想要使用v2.1,我建议将您的定义更新为Java EE 5版本。