读书人

自定义的标签如何会出现如下的异常呢

发布时间: 2011-12-31 23:50:30 作者: rapoo

自定义的标签怎么会出现如下的错误呢?
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试试

读书人网 >Java Web开发

热点推荐