📄 paginationsupport.java
字号:
/**
*文件功能:
*/
package com.common.util;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.common.Config;
/**
* @作者 徐建协
* @日期 2008-1-15
*/
public class PaginationSupport {
public final static int PAGESIZE = 20;
private int pageSize = PAGESIZE;// 每页的记录数
private List items;
private int totalCount;// 总记录数
private int totalPages;// 总页数
private int curPage = 1;// 当前页
private int[] indexes = new int[0];// 每页的起始索引
private int startIndex = 0;
private String url = "";// 页面地址
private String html = "";
private String urlPara = "";
private String contextPath="";
private boolean selfDefineNum=true;//是否可以自定义分页数量
private Map<String,String> map=new HashMap<String,String>();
private StringBuffer buf = new StringBuffer("");
// 页面传递的参数
private Map paramMap = new HashMap();
public PaginationSupport(Map paramMap) {
setParamMap(paramMap);
}
public String getParameter(String paraName){
if(paramMap.get(paraName) instanceof String[] ){
String[] e = (String[]) paramMap.get(paraName);
return e[0];
}else{
return null;
}
}
public String[] getParameters(String paraName){
if(paramMap.get(paraName) instanceof String[] ){
String[] e = (String[]) paramMap.get(paraName);
return e;
}else{
return null;
}
}
public PaginationSupport(List items, int totalCount) {
setPageSize(PAGESIZE);
setTotalCount(totalCount);
setItems(items);
// setStartIndex(0);
}
public PaginationSupport(List items) {
setPageSize(PAGESIZE);
setTotalCount(totalCount);
setItems(items);
setStartIndex(0);
}
public PaginationSupport(List items, int totalCount, int startIndex) {
setPageSize(PAGESIZE);
setTotalCount(totalCount);
setItems(items);
setStartIndex(startIndex);
}
public PaginationSupport(List items, int totalCount, int pageSize,
int startIndex) {
setPageSize(pageSize);
setTotalCount(totalCount);
setItems(items);
setStartIndex(startIndex);
}
public PaginationSupport(int pageSize, int curPage) {
setPageSize(pageSize);
setCurPage(curPage);
}
public String getHtml() {
buf.setLength(0);
buf.append(""
+ "<script language=\"javascript\" type=\"text/javascript\">\n"
+ "function pagination_key(){\n"
+ " if (((window.event.keyCode>=48)&&(window.event.keyCode<=57))||(window.event.keyCode==45)){\n"
+ " return window.event.keyCode;\n"
+ " }\n"
+ " if(window.event.keyCode==13){\n"
+ " pagination_gotoPage();\n"
+ " }\n"
+ " return window.event.keyCode=0;\n"
+ "}\n"
+ "function pagination_gotoPage() {\n"
+ " var pagination_param = \""+urlPara+"\";\n"
+ " var pagination_url=\""+url+"\";\n"
+ " var pagination_defaultPageSize=\""+Config.pageSize+"\";\n"
+ " var pagination_maxPage=\""+totalPages+"\";\n"
+ " var pagination_pageSize=document.getElementById('pagination_pageSize').value;\n"
+ " var pagination_intRegex = \"^[\\\\d]+$\";\n"
+ " if (pagination_pageSize.length==0){\n"
+ " pagination_pageSize=pagination_defaultPageSize;\n"
+ " }else{\n"
+ " if(!new RegExp(pagination_intRegex,\"g\").test(pagination_pageSize)){\n"
+ " pagination_pageSize=pagination_defaultPageSize;\n"
+ " }else{\n"
+ " pagination_pageSize=parseInt(pagination_pageSize);\n"
+ " if (pagination_pageSize<1){\n"
+ " pagination_pageSize=pagination_defaultPageSize;\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ " var pagination_newPage = document.getElementById('pagination_jumpto').value;\n"
+ " if (pagination_newPage.length==0){\n"
+ " pagination_newPage=\"1\";\n"
+ " }else{\n"
+ " if(!new RegExp(pagination_intRegex,\"g\").test(pagination_newPage)){\n"
+ " pagination_newPage=\"1\";\n"
+ " }else{\n"
+ " pagination_newPage=parseInt(pagination_newPage);\n"
+ " if (pagination_newPage>pagination_maxPage){\n"
+ " pagination_newPage=pagination_maxPage;\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ " pagination_url=pagination_url+\"?curPage=\"+pagination_newPage+\"&pageSize=\"+pagination_pageSize;\n"
+ " if (pagination_param.length>0){\n"
+ " pagination_url+=pagination_param;\n"
+ " }\n"
+ " window.location=pagination_url;\n"
+ "}\n"
+ "</script> \n");
buf.append("<style type=\"text/css\">\n");
buf.append("DIV.Content {BORDER-RIGHT: #ff9000 1px solid; BORDER-TOP: #ffe1ad 7px solid; BORDER-LEFT: #ff9000 1px solid; BORDER-BOTTOM: #ff9000 1px solid}\n");
buf.append("DIV.PageChanger {LINE-HEIGHT: 20px; HEIGHT: 20px; TEXT-ALIGN: right}\n");
buf.append("DIV.PageChanger IMG {VERTICAL-ALIGN: -3px}\n");
buf.append("DIV.PageChanger INPUT {BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; MARGIN: 0px 2px; BORDER-LEFT: #aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #fff}\n");
buf.append("DIV.PageChanger INPUT {HEIGHT: 12px; voice-family: inherit}\n");
buf.append("</style>\n");
buf.append("<DIV class=\"PageChanger\">\n");
if(this.selfDefineNum){
buf.append("自定义显示\n");
buf.append("<INPUT onKeyPress=\"pagination_key()\" id=\"pagination_pageSize\" style=\"font-size:11px;width:30px;height:15px\" value=\""+pageSize+"\" >条/页 \n");
}else{
buf.append(pageSize+"条/页 \n");
}
buf.append("共"+this.totalPages+"页"+ this.totalCount +"条记录\n");
if (curPage <= 1) {
buf.append("<IMG title=\"翻到上一页\" alt=\"上一页\" src=\""+this.getContextPath()+"/image/sys/pre_page_simple.gif\" border=\"0\" >\n");
} else {
buf.append("<a href=\"" + url + "?pageSize=" + pageSize
+ "&curPage=" + (curPage - 1) + urlPara + "\"><IMG title=\"翻到上一页\" alt=\"上一页\" src=\""+this.getContextPath()+"/image/sys/pre_page_simple_act.gif\" border=\"0\"></a>\n");
}
int i = 0;
if (this.totalPages <= 9) {
for (i = 1; i <= this.totalPages; i++) {
if (i == curPage) {
buf.append("<strong>" + i + "</strong>\n");
} else {
buf.append("<a href=\"" + url + "?pageSize=" + pageSize
+ "&curPage=" + i + urlPara + "\">" + i + "</a>\n");
}
}
} else if (this.totalPages > 9) {
if (curPage <= 4) {// 当前页位于前面4页
for (i = 1; i < curPage + 2; i++) {
if (i == curPage) {
buf.append("<strong>" + i + "</strong>\n");
} else {
buf.append("<a href=\"" + url + "?pageSize="
+ pageSize + "&curPage=" + i + urlPara + "\">"
+ i + "</a>\n");
}
}
buf.append("...\n");
for (i = this.totalPages - 1; i <= this.totalPages; i++) {
buf.append("<a href=\"" + url + "?pageSize=" + pageSize
+ "&curPage=" + i + urlPara + "\">" + i + "</a>\n");
}
} else if (curPage > 4 && curPage <= this.totalPages - 4) {// 当前页中间部分
for (i = 1; i <= 2; i++) {
buf.append("<a href=\"" + url + "?pageSize=" + pageSize
+ "&curPage=" + i + urlPara + "\">" + i + "</a>\n");
}
buf.append("...");
for (i = curPage - 2; i <= curPage + 2; i++) {
if (i == curPage) {
buf.append("<strong>" + i + "</strong>\n");
} else {
buf.append("<a href=\"" + url + "?pageSize="
+ pageSize + "&curPage=" + i + urlPara + "\">"
+ i + "</a>\n");
}
}
buf.append("...");
for (i = this.totalPages - 1; i <= this.totalPages; i++) {
buf.append("<a href=\"" + url + "?pageSize=" + pageSize
+ "&curPage=" + i + urlPara + "\">" + i + "</a>\n");
}
} else if (curPage > this.totalPages - 4) {// 当前页位于后面的部分
for (i = 1; i <= 2; i++) {
buf.append("<a href=\"" + url + "?pageSize=" + pageSize
+ "&curPage=" + i + urlPara + "\">" + i + "</a>\n");
}
buf.append("...");
for (i = curPage - 2; i <= curPage + 2; i++) {
if (i <= totalPages) {
if (i == curPage) {
buf.append("<strong>" + i + "</strong>\n");
} else {
buf.append("<a href=\"" + url + "?pageSize="
+ pageSize + "&curPage=" + i + urlPara
+ "\">" + i + "</a>\n");
}
}
}
}
}
// 下页
if (curPage >= this.totalPages) {
buf.append("<IMG title=\"翻到下一页\" alt=\"下一页\" src=\""+this.getContextPath()+"/image/sys/next_page.gif\" border=\"0\">\n");
} else {
buf.append("<a href=\"" + url + "?pageSize=" + pageSize
+ "&curPage=" + (curPage + 1) + urlPara
+ "\"><IMG title=\"翻到下一页\" alt=\"下一页\" src=\""+this.getContextPath()+"/image/sys/next_page_act.gif\" border=\"0\"></a>\n");
}
// 尾页
/*if (curPage >= this.totalPages) {
buf.append("<li class=\"current\">尾页</li>\n");
} else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -