package com.zdcf.tag; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; public class PagerTag extends TagSupport { private static final long serialVersionUID = 5729832874890369508L; // 每页显示的记录数 private int pageSize = 10; // 第几页 private int pageNo = 1; // 总记录数 private int recordCount; //表单名称 private String fromId; //当前页数表单名称 private String currentPageId; public String getCurrentPageId() { return currentPageId; } public void setCurrentPageId(String currentPageId) { this.currentPageId = currentPageId; } public String getFromId() { return fromId; } public void setFromId(String fromId) { this.fromId = fromId; } public int doStartTag() throws JspException { //总页数 int pageCount = (this.recordCount + this.pageSize - 1) / this.pageSize; String currentPage="currentPage"; if(currentPageId!=null&&!"".equals(currentPageId)){ currentPage=currentPageId; } StringBuffer pageContent=new StringBuffer(); //判断总页数是否为0 if (this.recordCount > 0){ //判断前台传递过的页数是否小于第一页 if (this.pageNo < 1){ this.pageNo = 1; } //判断前台传递过的页数是否大于总页数 if (this.pageNo > pageCount){ this.pageNo = pageCount; } if(pageNo<=1){ pageContent.append("<span class=\"onC\"><i></i><a>上一页</a></span>"); } if (pageNo > 1){ pageContent.append("<span ><i></i><a href='javascript:turnOverPage"); pageContent.append(currentPage); pageContent.append("(\""); pageContent.append(pageNo-1); pageContent.append("\")'>上一页</a></span>"); } pageContent.append("<ul>"); int start=pageNo; int end=start+4; // System.out.print("startstartstartstart"+start); // System.out.print("endendendendendendend"+end); if(((end-start)==4)&&((start-3)>0)){ start=start-2; end=end-2; } if(end>pageCount){ end=pageCount; } // if(end>5&&(end-start)<4){ start=end-4; }else if (end<5){ start=1; } if(start>1&&((end-start)==4)){ pageContent.append("..."); } for(int i=start;i<=end;i++){ pageContent.append("<li"); if(pageNo==i){ pageContent.append(" class='onC' "); } pageContent.append("><a href='javascript:turnOverPage"); pageContent.append(currentPage); pageContent.append("(\""); pageContent.append(i).append("\")'>").append(i).append("</a></li>"); } //判断总页数大于5 if(pageCount>5&&(start+5)<=pageCount){ pageContent.append("..."); } pageContent.append("</ul>"); if(pageNo>=pageCount){ pageContent.append("<span class=\"last onC\"><a>下一页</a><i class='onC'></i></span>"); }else{ pageContent.append("<span class=\"last\"><a href='javascript:turnOverPage"); pageContent.append(currentPage); pageContent.append("(\""); pageContent.append(pageNo+1); pageContent.append("\")'>下一页</a> <i ></i></span>"); } pageContent.append("<input type=\"hidden\" id='"); pageContent.append(currentPage); pageContent.append("' name=\""); pageContent.append(currentPage); pageContent.append("\" value=\"").append(pageNo).append( "\"/>\r\n"); pageContent.append(" <script type=\"text/javascript\"> \r\n"); pageContent.append("function obQ"); pageContent.append(currentPage); pageContent.append("(ob){ \r\n"); pageContent.append("ob.click(function(){ \r\n"); pageContent.append("ob.removeClass(\"onC\"); \r\n"); pageContent.append("ob.eq($(this).index()).addClass(\"onC\");\r\n"); pageContent.append("}) \r\n"); pageContent.append("}; \r\n"); pageContent.append("obQ"); pageContent.append(currentPage); pageContent.append("($(\"#page ul li\"));"); pageContent.append(" function turnOverPage"); pageContent.append(currentPage); pageContent.append("(no){\r\n"); pageContent.append("$('#"); pageContent.append(currentPage); pageContent.append("').attr('value',no);\r\n"); pageContent.append(" $('#").append(fromId).append("').submit();\r\n"); pageContent.append(" }\r\n"); pageContent.append("</script>"); } try { this.pageContext.getOut().println(pageContent.toString()); } catch (IOException e) { throw new JspException(e); } return 0; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNo() { return pageNo; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } public int getRecordCount() { return recordCount; } public void setRecordCount(int recordCount) { this.recordCount = recordCount; } }