分页模板

来源:互联网 发布:sql中replace函数用法 编辑:程序博客网 时间:2024/06/05 16:55
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 onchange="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>


0 0
原创粉丝点击