项目里有自定义的JSP标签,但是在<tag>标签下面有个<description>的子标签报错,虽然运行不受影响,但是看着比较烦。网搜了一下不太好找到解决方案,就记录下这个小细节。
报错内容
cvc-complex-type.2.4.a: Invalid content was found starting with element 'description'.
One of '{
"http://java.sun.com/xml/ns/j2ee":variable,
"http://java.sun.com/xml/ns/j2ee":attribute,
"http://java.sun.com/xml/ns/j2ee":dynamic-attributes,
"http://java.sun.com/xml/ns/j2ee":example,
"http://java.sun.com/xml/ns/j2ee":tag-extension
}' is expected.
解决方案
原文地址:https://www.genuitec.com/forums/topic/closed-taglib-parse-error-re-lt-variable-gt-tag/
主要就是这一句:
Your ordering is shot, your variable’s need to come before attribute and your desc neeed to come before your name-given:
意思就是把<description>放在<name>之前一行。
背景介绍
项目里自定义标签这样写的(报错的写法):
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>jsp tag</description>
<tlib-version>1.0</tlib-version>
<short-name>xiao-tag</short-name>
<uri>http://www.xiao.com/jsptag/xiao</uri>
<tag>
<name>urlAuth</name>
<tag-class>com.xiao.XXX</tag-class>
<body-content>JSP</body-content>
<!-- <description>这行会报错-->
<!-- 正确写法:把<description>这行移动到<name>上一行 -->
<description>URL控制</description>
<attribute>
<name>url</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
总结
在解决的过程中,看到其他人也有遇到过类似的错误,不一定是一模一样的报错。 比如把<description>往上或者往下移动一行,错误就会变的。 比如头部的xsi:schemaLocation一定要写正确。 比如开头的<short-name>xiao-tag</short-name>也要写。 反正还是比较麻烦的,都是一些小问题。
网友评论