自定义的标签怎么会出现如下的错误呢?
java文件:
package esystem.eshop;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class helloWorld extends TagSupport{
private PageContext pageContext;
private Tag parent;
public int doStartTag() throws javax.servlet.jsp.JspException{
return SKIP_BODY;
}
public int doEndTag() throws javax.servlet.jsp.JspException{
try{
pageContext.getOut().print( "Hello World! ");
}catch(java.io.IOException e){
throw new JspException( "IO Error: "+e.getMessage());
}
return SKIP_PAGE;
}
public void release(){}
}
描述文件:app.tld
<?xml version= "1.0 " encoding= "ISO-8859-1 " ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN "
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd ">
<taglib>
<tlibversion> 1.0 </tlibversion>
<jspversion> 1.1 </jspversion>
<shortname> Application Tag Library </shortname>
<uri> http://jakarta.apache.org/taglibs/struts-example-1.0 </uri>
<info>
</info>
<tag>
<name> helloWorld </name>
<tagclass> esystem.eshop.helloWorld </tagclass>
<bodycontent> empty </bodycontent>
<info>
</info>
</tag>
</taglib>
web.xml文件:
<taglib>
<taglib-uri> /tags/helloWorld </taglib-uri>
<taglib-location> /WEB-INF/app.tld </taglib-location>
</taglib>
test.jsp文件:
<%@ page isELIgnored= "false " contentType= "text/html;charset=gb2312 " language= "java " %>
<%@ taglib uri= "/WEB-INF/app.tld " prefix= "a " %>
<html:html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> 无标题文档 </title>
<html:base/>
</head>
<body>
<a:helloWorld/>
</body>
</html:html>
当运行test.jsp时出现如下的错误,看是什么问题:
org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
java.lang.NullPointerException
esystem.eshop.helloWorld.doEndTag(Unknown Source)
org.apache.jsp.test_jsp._jspx_meth_a_helloWorld_0(org.apache.jsp.test_jsp:94)
org.apache.jsp.test_jsp._jspService(org.apache.jsp.test_jsp:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
请大家指教
[解决办法]
doEndTag()中返回EVAL_PAGE试试