用自定义标签报空指针异常:求高手指点:
<?xml version="1.0" encoding="UTF-8"?><!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.0</jsp-version>
<short-name>pageTag</short-name>
<uri>http://org.web.ssh</uri> <tag>
<name>page</name>
<tag-class>com.util.PageTag</tag-class>
<body-content>tagdependent</body-content>
<attribute>
<name>page</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>com.util.PageUtil</type>
</attribute>
</tag></taglib>
jsp页面:<pageTag:page page="${page}"/>
web.xml配置:<!-- 自定义标签配置 -->
<jsp-config>
<taglib>
<taglib-uri>http://org.web.ssh.pageTag</taglib-uri>
<taglib-location>/WEB-INF/tlds/pageTag.tld</taglib-location>
</taglib>
</jsp-config>
<?xml version="1.0" encoding="UTF-8"?><!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.0</jsp-version>
<short-name>pageTag</short-name>
<uri>http://org.web.ssh</uri> <tag>
<name>page</name>
<tag-class>com.util.PageTag</tag-class>
<body-content>tagdependent</body-content>
<attribute>
<name>page</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>com.util.PageUtil</type>
</attribute>
</tag></taglib>
jsp页面:<pageTag:page page="${page}"/>
web.xml配置:<!-- 自定义标签配置 -->
<jsp-config>
<taglib>
<taglib-uri>http://org.web.ssh.pageTag</taglib-uri>
<taglib-location>/WEB-INF/tlds/pageTag.tld</taglib-location>
</taglib>
</jsp-config>
private PageUtil<?> page; public PageUtil<?> getPage() {
return page;
} public void setPage(PageUtil<?> page) {
this.page = page;
}
public void doTag() throws JspException, IOException {
JspContext jspContext = this.getJspContext();
JspWriter out = jspContext.getOut();
if (page.getPagetotalRec() == 0) {
out.println("没有记录");
} else {
long pageNo = page.getPageNo();
long totalPage = page.getPagetotalRec();
long pageSize = page.getPageSize();
String queryCase = page.getQueryCase();
String url = page.getUrl(); // 共有多少页
long pageCount = totalPage / pageSize+ ((totalPage % pageSize) > 0 ? 1 : 0); long iStart = pageNo, iNext;
iStart = (iStart < 1) ? 1 : iStart;
iNext = iStart + 9;
iNext = (iNext > pageCount) ? pageCount : iNext;
iStart = iNext - 9;
iStart = (iStart < 1) ? 1 : iStart; String pageStr = "共有" + pageCount + "页/"+totalPage+"条"+" "; String urlStr = ""; if ((iNext > 0) && (pageNo > 1)) {
if (queryCase != null && !"".equals(queryCase)) {
pageStr += "<a href=\"" + url + "&pageNo=" + (pageNo - 1)
+ "&pageSize=" + pageSize + queryCase
+ "\" title=\"上一页\">上一页</a> ";
} else {
pageStr += "<a href=\"" + url + "&pageNo=" + (pageNo - 1)
+ "&pageSize=" + pageSize
+ "\" title=\"上一页 \">上一页</a> ";
} }
for (; iStart <= iNext; iStart++) {
if (iStart == pageNo) {
pageStr += " " + iStart + " ";
} else { if (queryCase != null && !"".equals(queryCase)) {
pageStr += "<a href=\"" + url + "&pageNo=" + iStart
+ "&pageSize=" + pageSize + queryCase
+ "\" title=\"第" + iStart + "页\">[" + iStart
+ "]</a> ";
} else {
pageStr += "<a href=\"" + url + "&pageNo=" + iStart
+ "&pageSize=" + pageSize + "\" title=\"第"
+ iStart + "页\">[" + iStart + "]</a> ";
}
}
} if ((iNext > 0) && (pageNo < iNext)) {
if (queryCase != null && !"".equals(queryCase)) {
pageStr += "<a href=\"" + url + "&pageNo=" + (pageNo + 1)
+ "&pageSize=" + pageSize + queryCase
+ "\" title=\"下一页\">下一页</a> ";
} else {
pageStr += "<a href=\"" + url + "&pageNo=" + (pageNo + 1)
+ "&pageSize=" + pageSize
+ "\" title=\"下一页\">下一页</a> ";
}
} out.println(pageStr);
}
}}异常:
012-6-19 20:41:40 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at com.util.PageTag.doTag(PageTag.java:25)
at org.apache.jsp.authority.functionlist_jsp._jspx_meth_pageTag_005fpage_005f0(functionlist_jsp.java:483)
at org.apache.jsp.authority.functionlist_jsp._jspService(functionlist_jsp.java:166)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:157)
if (page.getPagetotalRec() == 0) {
out.println("没有记录");
但是我附上值了
<p>${page}</p>
<tr>
<td>${pageUtil.functionId}</td>
<td>${pageUtil.functionName }</td>
<td>
<c:if test="${pageUtil.functionIsleaf==1}">
<c:out value="是"></c:out>
</c:if>
<c:if test="${pageUtil.functionIsleaf==0}">
<c:out value="不是"></c:out>
</c:if>
</td>
<td>
<c:if test="${pageUtil.functionStatus==1}">
<c:out value="可用"></c:out>
</c:if>
<c:if test="${pageUtil.functionStatus==0}">
<c:out value="已冻结"></c:out>
</c:if>
</td>
</tr>
</c:forEach>