首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

在做分页的时候,出现java.lang.NumberFormatException: null 异常

2012-01-23 
在做分页的时候,出现java.lang.NumberFormatException: null 错误分页的util类:package com.sy.utilimpor

在做分页的时候,出现java.lang.NumberFormatException: null 错误
分页的util类:  
  
package com.sy.util;  
  
import java.util.List;  
@SuppressWarnings("unchecked")  
public class PageBean {  
  
  private int pageSize;  
  private int totalPage;  
  private int rowCount;  
  private int currentPage;  
  private int prePage;  
  private int nextPage;  
  private boolean hasNextPage;  
  private boolean hasPreviousPage;  
  private List list;  
  
  public PageBean() {  
  this.pageSize=10;  
  }  
  
  public int getPageSize() {  
  return pageSize;  
  }  
  
  public void setPageSize(int pageSize) {  
  this.pageSize = pageSize;  
  }  
  
  public int getTotalPage() {  
  return totalPage;  
  }  
  
  public void setTotalPage(int totalPage) {  
  this.totalPage = totalPage;  
  }  
  
  public int getRowCount() {  
  return rowCount;  
  }  
  
  public void setRowCount(int rowCount) {  
  this.rowCount = rowCount;  
  }  
  
  public int getCurrentPage() {  
  return currentPage;  
  }  
  
  public void setCurrentPage(int currentPage) {  
  this.currentPage = currentPage;  
  }  
  
  public int getPrePage() {  
  return prePage;  
  }  
  
  public void setPrePage(int prePage) {  
  this.prePage = prePage;  
  }  
  
  public int getNextPage() {  
  return nextPage;  
  }  
  
  public void setNextPage(int nextPage) {  
  this.nextPage = nextPage;  
  }  
  
  public boolean isHasNextPage() {  
  return hasNextPage;  
  }  
  
  public void setHasNextPage(boolean hasNextPage) {  
  this.hasNextPage = hasNextPage;  
  }  
  
  public boolean isHasPreviousPage() {  
  return hasPreviousPage;  
  }  
  
  public void setHasPreviousPage(boolean hasPreviousPage) {  
  this.hasPreviousPage = hasPreviousPage;  
  }  
  
  public List getList() {  
  return list;  
  }  
  
  public void setList(List list) {  
  this.list = list;  
  }  
   
  
}  
  
分页的数据库操作和逻辑判断我把他单独用一个PageDaoImpl来实现:
  public class PageDaoImpl extends HibernateDaoSupport {  
  
  private String hql;  
  public PageBean page;  
  public int start;  
  
  public void init(int start){


  page = new PageBean();  
  this.hql = "from ProAddTask";  
  this.start = start;  
  setRowCount();  
  setTotalPage();  
  setCurrentPage();  
  setPrePage();  
  setNextPage();  
  setPreOrNextBoolean();  
  }  
  
  public int getRowCount(){  
  return this.getHibernateTemplate().find("select p from ProAddTask p").size();
  }  
  
  public PageBean getPage(){  
  List list = (List)getHibernateTemplate().execute(new HibernateCallback(){  
  public Object doInHibernate(Session session) throws HibernateException, SQLException {  
  Query query = session.createQuery(hql);  
  query.setFirstResult(getStartIndex());  
  query.setMaxResults(page.getPageSize());  
  return query.list();  
  }  
  });  
  page.setList(list);  
  return page;  
  }  
   
  public void setPreOrNextBoolean() {  
  if (page.getCurrentPage() <= 1) {  
  page.setHasPreviousPage(false);  
  } else {  
  page.setHasPreviousPage(true);  
  }  
  if (page.getCurrentPage() >= page.getTotalPage()) {  
  page.setHasNextPage(false);  
  } else {  
  page.setHasNextPage(true);  
  }  
  }  
  
  public void setCurrentPage() {  
  if (start < 1) {  
  page.setCurrentPage(1);  
  }  
  if (start > page.getTotalPage()) {  
  page.setCurrentPage(page.getTotalPage());  
  }  
  page.setCurrentPage(start);  
  }  
  
  public void setPrePage() {  
  page.setPrePage(page.getCurrentPage() - 1);  
  }  
  
  public void setNextPage() {  
  page.setNextPage(page.getCurrentPage() + 1);  
  }  
  
  public void setTotalPage() {  
  int rowCount = getRowCount();  
  int pageSize = page.getPageSize();  
  if (rowCount > pageSize) {  
  if (rowCount % pageSize == 0) {  
  page.setTotalPage(rowCount / pageSize);  
  } else {  
  page.setTotalPage(1 + (rowCount / pageSize));  
  }  
  } else {  
  page.setTotalPage(1);  
  }  
  }  
  
  public void setRowCount() {  
  page.setRowCount(getRowCount());  
  }  
  
  public int getStartIndex() {  
  int startIndex = 0;  
  if (start < 0) {  
  startIndex = 0;  
  } else {  
  if (start > page.getTotalPage()) {  
  startIndex = page.getPageSize() * (page.getTotalPage() - 1);  
  } else {  


  startIndex = page.getPageSize() * (start - 1);  
  }  
  }  
  return startIndex;  
  }  
}  
  
  
  
然后是业务层接口,举例AdminService.java  
  
//管理员service层接口  
public interface AdminService extends BaseService{  
//分页初始化  
  public void init(int pno);  
//分页实现  
  public Page getPage();  
}  
  
实现类AdminServiceImpl.java  

//管理员service层实现类  
public class AdminServiceImpl extends BaseServiceImpl implements AdminService {  
  
  public Page getPage() {  
  return Pdao.getPage();  
  }  
  public void init(int pno) {  
  Pdao.init(pno);  
  }  
}  
  
  
struts的action层AdminAction.java  
  
  
  
//管理员action实现类  
public class AdminAction extends BaseAction {  
  private QueryTaskService queryTaskService;

public QueryTaskService getQueryTaskService() {
return queryTaskService;
}

public void setQueryTaskService(QueryTaskService queryTaskService) {
this.queryTaskService = queryTaskService;
}
   
//查看管理员  
  public ActionForward listAdmins(ActionMapping mapping, ActionForm form,  
  HttpServletRequest request, HttpServletResponse response) {  
   
  System.out.println(request.getParameter("pno"));
  int pno = (new Integer(request.getParameter("pno"))).intValue();  
  queryTaskService.init(pno);  
  Page myPage = queryTaskService.getPage();  
  List myList = queryTaskService.getPage().getList();  
  request.setAttribute("myPage", myPage);  
  request.setAttribute("AdminList", myList);  
  return mapping.findForward("show");  
   
  }  
}  
  
  
结构清晰,也很实用。  
  
页面lookAdmin.jsp  
  
  
  
<%@ page language="java" pageEncoding="UTF-8"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>  
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>  
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>  
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>  
<html>  
  <head>  
  <meta http-equiv="Content-Language" content="zh-cn">  
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  <title></title>  
  </head>  
  <body>  
  <table align="center" width="500">  
  <tr>  
  <td align="center" colspan="10">  


  <logic:present name="myPage">  
  <html:link page="/AdminPage.do?pno=1">首页</html:link>  
  <logic:equal name="myPage" property="hasPreviousPage" value="false">上一页</logic:equal>  
  <logic:equal name="myPage" property="hasPreviousPage" value="true">  
  <a href="./AdminPage.do?pno=<bean:write name="myPage" property="prePage"/>">上一页</a>  
  </logic:equal>  
   
  每页<bean:write name="myPage" property="pageSize"/>条记录  
  共<bean:write name="myPage" property="rowCount"/>条记录  
  当前第(<bean:write name="myPage" property="currentPage"/>/<bean:write name="myPage" property="totalPage"/>)页  
  <logic:equal name="myPage" property="hasNextPage" value="false">下一页</logic:equal>  
  <logic:equal name="myPage" property="hasNextPage" value="true">  
  <a href="./AdminPage.do?pno=<bean:write name="myPage" property="nextPage"/>">下一页</a>  
  </logic:equal>  
  <a href="./AdminPage.do?pno=<bean:write name='myPage' property='totalPage'/>">末页</a>  
  </logic:present>  
  </td>  
  </tr>  
  </table>  
  </body>  
</html>  



System.out.println(request.getParameter("pno"));
打印出来是null
~~

[解决办法]
lz把这个request.getParameter("pno")改成request.getParameter("myPage")
[解决办法]
把页数打印出来看看就知道了,是否为合法number
[解决办法]
分页时参数是String,要强转Int!
[解决办法]
你传递的index肯定有问题的 debug一下 具体看看
[解决办法]
类型转换错误,检查你的类型。

热点排行