因为项目需求的变动。现在不能用ajax来显示内容了,所以我最爱的jquer_pagination就没办法用了。无奈之下。我仿照jquery_pagination写了一个html的生成类,希望能帮助到需要的人。当然还有那些会写但是懒得写的人。哈哈!
这个需要的CSS文件就是jquery_pagination里面的那个CSS。也可以自己改写程序和CSS文件。
/**
* @author Xiao
* @time 2012-5-4 9:28
* @description 网站前台用的分页辅助类
*/
public class PaginationUtil {
public static void main(String[] args) {
for (int i = 1; i <= 20; i++) {
System.out.println(getPaginationHtml(600, 30, i, 2, 5, "/xxx/ddd/{page}/sss"));
}
}
/**
* 接收参数,生成分页的静态HTML字符串。
* @param allTotal 所有的页面数
* @param currentRows 当前页面显示数
* @param currentPage 当前页面
* @param edgeEntries 边缘页数
* @param displayEntries 主体页数
* @param link_to 链接(需要加{page}才能显示连接的页码)
* @return 分页的html字符串
*/
public static String getPaginationHtml(Integer allTotal,Integer currentRows,Integer currentPage,Integer edgeEntries,Integer displayEntries,String link_to){
StringBuffer sb = new StringBuffer();
//获取总页码
Integer total = 0;
if(allTotal % currentRows > 0){
total = allTotal / currentRows + 1;
}else{
total = allTotal / currentRows;
}
//判断如果选中页码大于总页码。则显示总页码数
if(total < currentPage){
currentPage = total;
}
//左边显示总数量和总页数
String linkStr = "";
sb.append("<div class='r'>");
//上一页
if(currentPage == 1){
sb.append("<a class='current prev'>上一页</a>");
}else{
linkStr = link_to.replace("{page}", (currentPage - 1) + "");
sb.append("<a class='paginationBut prev' href='" + linkStr + "'>上一页</a>");
}
//判断总页码是否大于需显示的页码数
if((edgeEntries*2) + displayEntries > total){
//显示数大于总页数
for (int i = 1; i <= total; i++) {
if(i == currentPage){
sb.append("<span>").append(i).append("</span>");
}else{
linkStr = link_to.replace("{page}", i+"");
sb.append("<a href='").append(linkStr).append("'>" + i + "</a>");
}
}
}else if(currentPage <= 6){
//页码小于或者等于6时
Integer currentTotal = 0;
if(currentPage < 5){
currentTotal = 5;
}else{
currentTotal = currentPage+2;
}
for (int i = 1; i <= currentTotal; i++) {
if(i == currentPage){
sb.append("<span>").append(i).append("</span>");
}else{
linkStr = link_to.replace("{page}", i+"");
sb.append("<a href='").append(linkStr).append("'>" + i + "</a>");
}
}
sb.append("<span>...</span>");
linkStr = link_to.replace("{page}", (total - 1) + "");
sb.append("<a href='").append(linkStr).append("'>").append((total - 1)).append("</a>");
linkStr = link_to.replace("{page}", total + "");
sb.append("<a href='").append(linkStr).append("'>").append(total).append("</a>");
}else if((total - 4) <= currentPage){
linkStr = link_to.replace("{page}", "1");
sb.append("<a href='").append(linkStr).append("'>1</a>");
linkStr = link_to.replace("{page}", "2");
sb.append("<a href='").append(linkStr).append("'>2</a>");
sb.append("<span>...</span>");
Integer currentTotal = 0;
if((total - 1) > currentPage){
currentTotal = currentPage - 3;
}else{
currentTotal = total - 4;
}
for (int i = currentTotal; i <= total; i++) {
if(i == currentPage){
sb.append("<span>").append(i).append("</span>");
}else{
linkStr = link_to.replace("{page}", i+"");
sb.append("<a href='").append(linkStr).append("'>").append(i).append("</a>");
}
}
}else{
linkStr = link_to.replace("{page}", "1");
sb.append("<a href='").append(linkStr).append("'>1</a>");
linkStr = link_to.replace("{page}", "2");
sb.append("<a href='").append(linkStr).append("'>2</a>");
sb.append("<span>...</span>");
linkStr = link_to.replace("{page}", (currentPage - 3) + "");
sb.append("<a href='").append(linkStr).append("'>").append((currentPage - 3)).append("</a>");
linkStr = link_to.replace("{page}", (currentPage - 2) + "");
sb.append("<a href='").append(linkStr).append("'>").append((currentPage - 2)).append("</a>");
linkStr = link_to.replace("{page}", (currentPage - 1) + "");
sb.append("<a href='").append(linkStr).append("'>").append((currentPage - 1)).append("</a>");
sb.append("<span>").append(currentPage).append("</span>");
linkStr = link_to.replace("{page}", (currentPage + 1) + "");
sb.append("<a href='").append(linkStr).append("'>").append((currentPage + 1)).append("</a>");
linkStr = link_to.replace("{page}", (currentPage + 2) + "");
sb.append("<a href='").append(linkStr).append("'>").append((currentPage + 2)).append("</a>");
sb.append("<span>...</span>");
linkStr = link_to.replace("{page}", (total - 1) + "");
sb.append("<a href='").append(linkStr).append("'>").append((total - 1)).append("</a>");
linkStr = link_to.replace("{page}", total + "");
sb.append("<a href='").append(linkStr).append("'>").append(total).append("</a>");
}
//下一页
if(currentPage == total){
sb.append("<a class='current prev'>下一页</a>");
}else{
linkStr = link_to.replace("{page}", (currentPage + 1) + "");
sb.append("<a class='paginationBut prev' href='").append(linkStr).append("'>下一页</a>");
}
sb.append(" 到第<input type='text' id='paginationPageNum' style='width:30px;' value='" + currentPage + "'/><input type='button' value='确定' />");
sb.append("</div>");
sb.append("<div class='l'><span>共 ").append(allTotal).append(", ").append(total).append("页</span></div>");
return sb.toString();
}
}