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

wang_daren 2011-10-08 03:19:09
分页的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
~~
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_daren 2011-10-08
  • 打赏
  • 举报
回复
晕~问题解决了~~
pno=new Integer(request.getParameter("pno")).intValue();
要给个if判断是否为null~·

if (request.getParameter("pno")==null) {
pno=1;
} else {
pno=new Integer(request.getParameter("pno")).intValue();
}
hykhym 2011-10-08
  • 打赏
  • 举报
回复
路过。。。。。。。。。。。学习
hongfeideng 2011-10-08
  • 打赏
  • 举报
回复
类型转换错误,检查你的类型。
飓风zj 2011-10-08
  • 打赏
  • 举报
回复
你传递的index肯定有问题的 debug一下 具体看看
aqqbjlgu 2011-10-08
  • 打赏
  • 举报
回复
分页时参数是String,要强转Int!
softroad 2011-10-08
  • 打赏
  • 举报
回复
把页数打印出来看看就知道了,是否为合法number
休谱诺斯 2011-10-08
  • 打赏
  • 举报
回复
lz把这个request.getParameter("pno")改成request.getParameter("myPage")

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧