/WEB-INF/classes/MyTag.class被编译代码:
package test;
import java.io.*;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
public class MyTag extends TagSupport{
private Tag parent;
private PageContext pageContext;
String first;
public int doStartTag(){
return SKIP_BODY;
}
public void setFirst(String _first){this.first=_first;}
public int doEndTag()throws JspException{
try{
JspWriter jw=pageContext.getOut();
jw.print("this is your name is"+first);
}catch(Exception e){
throw new JspException("MyTag Error:"+e.getMessage());
}
return SKIP_PAGE;
}
public void release(){}
public void setParent(Tag t){
parent=t;
}
public void setPageContext(PageContext pc){
this.pageContext=pc;
}
public Tag getParent(){
return parent;
}
}
以下是CustomTag.tld文件:
/p>
"-//Sun Microsystems,Inc //DTD JSP Tag Library 1.2 //EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
1.0
1.2
my
http://localhost:8080/MyTag
name
test.MyTag
empty
first
true
false
页面中的调用:
出现的错误:
org.apache.jasper.JasperException: /index.jsp(12,0) Unable to find setter method for attribute: first
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
org.apache.jasper.compiler.Generator$GenerateVisitor.evaluateAttribute(Generator.java:2677)
org.apache.jasper.compiler.Generator$GenerateVisitor.generateSetters(Generator.java:2825)
org.apache.jasper.compiler.Generator$GenerateVisitor.generateCustomStart(Generator.java:2158)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1669)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3272)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
为什么会这样?