JSP自定義分頁標簽
來自: http://my.oschina.net/chengxiaoyuan/blog/614989
分頁實現類,繼承TagSupport,doStartTag方法內拼湊分頁的html。
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class FromPageTag extends TagSupport {
private static final long serialVersionUID = -3662095604913922414L;
private int pageNo;//頁碼
private int pageSize;//每頁數量
private int totalRecord;//總記錄數
@Override
public int doStartTag() throws JspException {
int tag = totalRecord % pageSize;
if (tag > 0) {
tag = 1;
}
int endPageNo = totalRecord / pageSize + tag;
StringBuilder sb = new StringBuilder(
"<div class=\"dataTables_wrapper no-footer\"><div class=\"dataTables_paginate paging_simple_numbers\">");
// 前一頁
sb.append("<a class=\"paginate_button previous disabled\" ");
if (pageNo > 1) {
sb.append("onclick=\"_turnPage(").append(pageNo - 1).append(")\"");
}
sb.append(">上一頁</a>");
// 第一頁
sb.append(addPageCell(1));
if (endPageNo > 1) {
sb.append(addPageCell(2));
}
if (endPageNo > 2) {
sb.append(addPageCell(3));
}
if (pageNo > 5) {
sb.append("<span>…</span>");
}
// 中間頁碼
for (int i = pageNo - 1; i <= pageNo + 1; i++) {
if (i <= 3) {
continue;
}
if (i >= endPageNo - 2) {
continue;
}
sb.append(addPageCell(i));
}
if (pageNo < endPageNo - 3) {
sb.append("<span>…</span>");
}
//后面頁碼
if (endPageNo - 2 > 3) {
sb.append(addPageCell(endPageNo - 2));
}
if (endPageNo - 1 > 3) {
sb.append(addPageCell(endPageNo - 1));
}
if(endPageNo > 3) {
sb.append(addPageCell(endPageNo));
}
//最后一頁
sb.append("<a class=\"paginate_button next disabled\"");
if(pageNo < endPageNo) {
sb.append("onclick=\"_turnPage(").append(pageNo+1).append(")\"");;
}
sb.append(">下一頁</a></div>");
try {
if (sb != null) {
JspWriter out = pageContext.getOut();
out.print(sb);
}
} catch (Exception e) {
throw new JspException("錯誤");
}
return super.doStartTag();
}
private String addPageCell(int number) {
StringBuilder sb = new StringBuilder();
sb.append("<span><a class=\"paginate_button ");
if (pageNo != number) {
sb.append("\" onclick=\"_turnPage(").append(number).append(")\"");
} else {
sb.append(" current\"");
}
sb.append(">").append(number).append("</a></span>");
return sb.toString();
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
2. 在WEB-INF/tlds內增加 formPage.tld
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version><!-- 標簽庫的版本 --> <jsp-version>1.2</jsp-version><!-- 這個標簽庫要求的JSP規范版本 --> <short-name>mytag</short-name><!-- JSP頁面編寫工具可以用來創建助記名的可選名字 --> <tag> <name>formPage</name><!-- 唯一標簽名 --> <tag-class>com.common.FromPageTag</tag-class><!--包路徑自己定--> <body-content>empty</body-content><!-- 正文內容類型 --> <!-- 參數 --> <attribute> <name>pageNo</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>pageSize</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>totalRecord</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
3. web.xml中定義
<jsp-config> <taglib> <taglib-uri>/tld/page</taglib-uri> <taglib-location>/WEB-INF/tlds/formPage.tld</taglib-location> </taglib> </jsp-config>
4. 使用
<%@ taglib uri="/tld/page" prefix="myTag" %>
<myTag:formPage pageSize="${pageSize }" pageNo="${pageNo }" totalRecord="${totalRecord }"/>
<script type="text/javascript">
function _turnPage(pageNo) {
document.getElementById("pageNo").value=pageNo;
document.getElementById("pageSize").value=20;
document.getElementById("myForm").submit();
}
</script>
本文由用戶 sdsd55 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!