分頁模板

package cn.jxlg.oa.domain;

import java.util.List;

/**
 * 分頁功能中的一頁的信息
 *
 * @author tyg
 *
 */
public class PageBean {

    // 指定的或是頁面參數
    private int currentPage; // 當前頁
    private int pageSize; // 每頁顯示多少條

    // 查詢數據庫
    private int recordCount; // 總記錄數
    private List recordList; // 本頁的數據列表

    // 計算
    private int pageCount; // 總頁數
    private int beginPageIndex; // 頁碼列表的開始索引(包含)
    private int endPageIndex; // 頁碼列表的結束索引(包含)

    /**
     * 只接受前4個必要的屬性,會自動的計算出其他3個屬生的值
     *
     * @param currentPage
     * @param pageSize
     * @param recordCount
     * @param recordList
     */
    public PageBean(int currentPage, int pageSize, int recordCount, List recordList) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.recordCount = recordCount;
        this.recordList = recordList;

        // 計算總頁碼
        pageCount = (recordCount + pageSize - 1) / pageSize;

        // 計算 beginPageIndex 和 endPageIndex
        // >> 總頁數不多於10頁,則全部顯示
        if (pageCount <= 10) {
            beginPageIndex = 1;
            endPageIndex = pageCount;
        }
        // >> 總頁數多於10頁,則顯示當前頁附近的共10個頁碼
        else {
            // 當前頁附近的共10個頁碼(前4個 + 當前頁 + 後5個)
            beginPageIndex = currentPage - 4;
            endPageIndex = currentPage + 5;
            // 當前面的頁碼不足4個時,則顯示前10個頁碼
            if (beginPageIndex < 1) {
                beginPageIndex = 1;
                endPageIndex = 10;
            }
            // 當後面的頁碼不足5個時,則顯示後10個頁碼
            if (endPageIndex > pageCount) {
                endPageIndex = pageCount;
                beginPageIndex = pageCount - 10 + 1;
            }
        }
    }

    public List getRecordList() {
        return recordList;
    }

    public void setRecordList(List recordList) {
        this.recordList = recordList;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getRecordCount() {
        return recordCount;
    }

    public void setRecordCount(int recordCount) {
        this.recordCount = recordCount;
    }

    public int getBeginPageIndex() {
        return beginPageIndex;
    }

    public void setBeginPageIndex(int beginPageIndex) {
        this.beginPageIndex = beginPageIndex;
    }

    public int getEndPageIndex() {
        return endPageIndex;
    }

    public void setEndPageIndex(int endPageIndex) {
        this.endPageIndex = endPageIndex;
    }

}

使用案例


1、action調用
// 準備分頁信息, 最終版
        new QueryHelper(Reply.class, "r")//
                .addCondition("r.topic=?", topic)//
                .addOrderProperty("r.postTime", true)//
                .preparePageBean(replyService, pageNum, pageSize);

2、service調用
// 公共的查詢分頁信息的方法(最終版)
    public PageBean getPageBean(int pageNum, int pageSize, QueryHelper queryHelper) {
        System.out.println("-------> DaoSupportImpl.getPageBean( int pageNum, int pageSize, QueryHelper queryHelper )");

        // 參數列表
        List<Object> parameters = queryHelper.getParameters();

        // 查詢本頁的數據列表
        Query listQuery = getSession().createQuery(queryHelper.getListQueryHql()); // 創建查詢對象
        if (parameters != null) { // 設置參數
            for (int i = 0; i < parameters.size(); i++) {
                listQuery.setParameter(i, parameters.get(i));
            }
        }
        listQuery.setFirstResult((pageNum - 1) * pageSize);
        listQuery.setMaxResults(pageSize);
        List list = listQuery.list(); // 執行查詢

        // 查詢總記錄數量
        Query countQuery = getSession().createQuery(queryHelper.getCountQueryHql());
        if (parameters != null) { // 設置參數
            for (int i = 0; i < parameters.size(); i++) {
                countQuery.setParameter(i, parameters.get(i));
            }
        }
        Long count = (Long) countQuery.uniqueResult(); // 執行查詢

        return new PageBean(pageNum, pageSize, count.intValue(), list);
    }

3、jsp調用  jspf文件
<!--分頁信息-->
    <%@ include file="/WEB-INF/jsp/util/pageView.jspf" %>
    <s:form action="topic_show?id=%{id}"></s:form>

頁面模板

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<div id=PageSelectorBar>
    <div id=PageSelectorMemo>
        頁次:${currentPage}/${pageCount }頁 &nbsp;
        每頁顯示:${pageSize }條 &nbsp;
        總記錄數:${recordCount }條
    </div>
    <div id=PageSelectorSelectorArea>
    
        <a href="javascript: gotoPage(1)" title="首頁" style="cursor: hand;">
            <img src="${pageContext.request.contextPath}/style/blue/images/pageSelector/firstPage.png"/>
        </a>
        
        <s:iterator begin="%{beginPageIndex}" end="%{endPageIndex}" var="num">
            <s:if test="#num == currentPage"> <%-- 當前頁 --%>
                <span class="PageSelectorNum PageSelectorSelected">${num}</span>
            </s:if>
            <s:else> <%-- 非當前頁 --%>
                <span class="PageSelectorNum" style="cursor: hand;" onClick="gotoPage(${num});">${num}</span>
            </s:else>
            
        </s:iterator>
        
        <a href="javascript: gotoPage(${pageCount})" title="尾頁" style="cursor: hand;">
            <img src="${pageContext.request.contextPath}/style/blue/images/pageSelector/lastPage.png"/>
        </a>
        
        轉到:
        <select οnchange="gotoPage(this.value)" id="_pn">
            <s:iterator begin="1" end="%{pageCount}" var="num">
                <option value="${num}">${num}</option>
            </s:iterator>
        </select>
        <script type="text/javascript">
            $("#_pn").val("${currentPage}");
        </script>
        
    </div>
</div>


<script type="text/javascript">
    function gotoPage( pageNum ){
        // window.location.href = "forum_show.action?id=${id}&pageNum=" + pageNum;
        
        $(document.forms[0]).append("<input type='hidden' name='pageNum' value='" + pageNum +"'>");
        document.forms[0].submit();
    }
</script>


發佈了34 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章