分页方法

本文介绍了一种使用Java实现分页的方法,包括计算总页数、当前页的数据范围及展示页码等功能。通过调整每页显示的记录数和页码数量,可以灵活地应用于不同的分页场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/**
* 分页
* @param al
* @param curPage
* @return
*/
protected HashMap getPageList(ArrayList al, int curPage) {
HashMap result=new HashMap();
int count = al.size();
ArrayList showPage=new ArrayList();
int totalPage=0;
int pageCount = 100;//一页显示的条数
int showPageSize=10;//显示的页数,[1][2][3]
if (count == 0){
result.put("pageSize", String.valueOf(pageCount));
result.put("currentPage", String.valueOf(curPage));
result.put("showPage", showPage);
result.put("totalPage", String.valueOf(totalPage));
result.put("data", al);
return result;
}


int pageLimit = (count - 1) / pageCount + 1;
int begin = 0;
int end = count;
if (curPage * pageCount < count) {
end = curPage * pageCount;
}
if ((curPage - 1) * pageCount > 1 && curPage <= pageLimit) {
begin = (curPage - 1) * pageCount;
}

ArrayList rt = new ArrayList(al.subList(begin, end));

//总页数
if(count%pageCount==0){
totalPage=count/pageCount;
}else{
totalPage=count/pageCount+1;
}

if(curPage>totalPage) curPage=totalPage;



//设置分页显示的数
if(totalPage>showPageSize){
int half=showPageSize/2;//显示分页页数的一半
if(curPage>totalPage-half){//当前页在末尾的几页时
for(int i=totalPage-showPageSize;i<totalPage+1;i++){
showPage.add(String.valueOf(i));
}
}else if(curPage>half){//当前页在中间的几页时
begin=curPage-half;
end=curPage+half;
for(int i=begin;i<end+1;i++){
showPage.add(String.valueOf(i));
}
}else{
for(int i=1;i<showPageSize+1;i++){
showPage.add(String.valueOf(i));
}
}
}else{//总页数小于需要显示的页数,则把页数添加到showPage中
for(int i=1;i<totalPage+1;i++){
showPage.add(String.valueOf(i));
}
}
// System.out.println("size:"+curPage);
result.put("pageSize", String.valueOf(pageCount));
result.put("currentPage", String.valueOf(curPage));
result.put("showPage", showPage);
result.put("totalPage", String.valueOf(totalPage));
result.put("data", rt);
return result;
}

页面:

<!-- 分页 -->
<table width="200px" align="center">
<tr>
<td align="center">
<html:link page="/issueAdmin.do?op=show_all&currentPage=1">首页</html:link>
</td>
<td align="center">
<logic:iterate id="ele" name="showPage">
<logic:equal name="ele" value="${currentPage}"><strong></logic:equal>
<html:link page="/***.do?op=show_all&currentPage=${ele}">[<bean:write name="ele"/>]</html:link>
<logic:equal name="ele" value="${currentPage}"></strong></logic:equal>
</logic:iterate>
</td>
<td align="center">
<html:link page="/***do?op=show_all&currentPage=${taotalPage}">尾页</html:link>
</td>
<td align="center">第<bean:write name="currentPage"/>页</td>
</tr>

</table>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值