猜测 javaye的分页设计

非常喜欢javaeye的分页 ,自己也写了一个 按照逻辑测试了一下

代码如下:


int curPage = pageInfo.getPageNo();
int pageCount = pageInfo.getPageCount();

if (curPage > pageCount) { //当前页大于最大页
curPage = pageCount;
}

StringBuffer sb = new StringBuffer();
sb.append("<div class=\"pagination\">");
if (curPage > 1) { // 添加 "上一页"
// 加上链接 curpage-1
sb.append("<a href=\"" + getHref(curPage - 1)
+ "\" class=\"prev_page\" rel=\"prev start\">"
+ PREVIOUS_PAGE + "</a>");
} else {
sb.append("<span class=\"disabled prev_page\">" + PREVIOUS_PAGE + "</span>");
}

if ((curPage < liststep) && (pageCount - curPage + 1 < liststep)) { //显示全部
for (int i = 1; i <= pageCount; i++) {
if (i == curPage) {
sb.append("<span class=\"current\">" + i + "</span>");
} else {
sb.append(goHref(i));
}
}
} else if ((curPage < liststep) && (pageCount - curPage + 1 >= liststep)) { //显示 1 2 3 ... 45 46
int left = curPage < 3 ? 3 : curPage + 1;
for (int i = 1; i <= left; i++) {
if (i == curPage) {
sb.append("<span class=\"current\">" + i + "</span>");
} else {
sb.append(goHref(i));
}
}
sb.append("<span class=\"gap\">…</span>");
sb.append(goHref(pageCount - 1));
sb.append(goHref(pageCount));
} else if ((curPage >= liststep) && (pageCount - curPage + 1 >= liststep)) { //显示 1 2 。。。5 6 7 。。45 46
sb.append(goHref(1));
sb.append(goHref(2));
sb.append("<span class=\"gap\">…</span>");
sb.append(goHref(curPage - 1));
sb.append("<span class=\"current\">" + curPage + "</span>");
sb.append(goHref(curPage + 1));
sb.append("<span class=\"gap\">…</span>");
sb.append(goHref(pageCount - 1));
sb.append(goHref(pageCount));
} else if ((curPage >= liststep) && (pageCount - curPage + 1 < liststep)) { //显示 1 2 。。。 44 45 46
sb.append(goHref(1));
sb.append(goHref(2));
sb.append("<span class=\"gap\">…</span>");

int begin = pageCount - curPage + 1 < 3 ? pageCount - 2 : curPage - 1;
for (int i = begin; i <= pageCount; i++) {
if (i == curPage) {
sb.append("<span class=\"current\">" + i + "</span>");
} else {
sb.append(goHref(i));
}
}
}

// 显示下-页
if (curPage != pageCount) {
// 加上链接 curpage+1
sb.append("<a href=\"" + getHref(curPage + 1)
+ "\" class=\"next_page\" rel=\"next\">" + NEXT_PAGE
+ "</a>");
} else {
sb.append("<span class=\"disabled next_page\">" + NEXT_PAGE
+ "</span>");
}

sb.append("</div>");


效果如图:


[img]http://dl.iteye.com/upload/attachment/0070/3890/d5726880-c50c-3f9b-b6b5-218b57f5f738.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/0070/3892/8535fefb-0673-38c4-9b2f-3c5b99a64660.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/0070/3894/a5f108b8-0159-3768-9e08-d12ec98ca5c7.jpg[/img]


[img]http://dl.iteye.com/upload/attachment/0070/3896/c6c235d0-4a3f-3c69-9e4e-d9b8b9ee4752.jpg[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值