Java 我得到了一个错误;HtmlEncoderTag无法解析为类型“0”;关于定义自定义标记?
我正在定义一个自定义标记“htmlencoder”。我有以下文件: WEB-INF/classes/HtmlEncoderTag.jar,java代码如下:Java 我得到了一个错误;HtmlEncoderTag无法解析为类型“0”;关于定义自定义标记?,java,jsp,custom-tag,Java,Jsp,Custom Tag,我正在定义一个自定义标记“htmlencoder”。我有以下文件: WEB-INF/classes/HtmlEncoderTag.jar,java代码如下: import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; public clas
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
//....
}
pckage MyTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
//....
}
<?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></short-name>
<tag>
<name>htmlencode</name>
<tag-class>MyTag.HtmlEncoderTag</tag-class>
<body-content>JSP</body-content>
</tag>
</taglib>
WEB-INF/htmlencoder.tld:
<?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></short-name>
<tag>
<name>htmlencode</name>
<tag-class>HtmlEncoderTag</tag-class>
<body-content>JSP</body-content>
</tag>
</taglib>
1
1.2
htmlencode
HtmlEncoderTag
JSP
index.jsp:
<%@ taglib uri="WEB-INF/htmlencoder.tld" prefix="htmlencoder"%>
<head>
<title>Watch out you sinners...</title>
</head>
<html>
<body bgcolor="white">
<htmlencoder:htmlencode><script <% //the error refers to this line %>
type="javascript">BadStuff()</script></htmlencoder:htmlencode>
</body>
</html>
小心你们这些罪人。。。
坏东西
当我运行页面时,出现了错误“HtmlEncoderTag无法解析为类型”,它显示了index.jsp:7行(我在上面提到过)
我该怎么办?两件事:
我找到了答案。我不确定是否有必要,但我的问题是这样解决的: 您必须将标记类放入一个包中。例如,您的HtmlEncoderTag.jar文件应该放在WEB-INF/MyTag/中,如下所示:
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
//....
}
pckage MyTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
//....
}
<?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></short-name>
<tag>
<name>htmlencode</name>
<tag-class>MyTag.HtmlEncoderTag</tag-class>
<body-content>JSP</body-content>
</tag>
</taglib>
您的tld文件如下所示:
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
//....
}
pckage MyTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
//....
}
<?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></short-name>
<tag>
<name>htmlencode</name>
<tag-class>MyTag.HtmlEncoderTag</tag-class>
<body-content>JSP</body-content>
</tag>
</taglib>
1
1.2
htmlencode
MyTag.HtmlEncoderTag
JSP
我把它放在lib中,但没有区别。而且它不在一个包裹里,我应该把它放进去吗?不应该把它放在一个包裹里。是的。。。。!!我也经历了同样的事情。。。当您将“标记处理程序类”放入一个包中时,它工作得非常好。如果使用独立的标记处理程序类,它会标记错误,与“saeed”报告的错误相同。谁能解释一下原因吗。。。