自定義分頁標籤

  1. 分頁實現類,繼承TagSupport,doStartTag方法內拼湊分頁的html。
    javascript

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.tldhtml

<?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中定義java

    <jsp-config>
        <taglib>
            <taglib-uri>/tld/page</taglib-uri>
            <taglib-location>/WEB-INF/tlds/formPage.tld</taglib-location>
        </taglib>
    </jsp-config>

4. 使用web

<%@ 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>
相關文章
相關標籤/搜索