Freemarker分页

有两个参考类,
import java.util.List;   
  

/**  
 * 分页显示对象  
 * @param <T>  
 */  

public class PageView<T> {       


    /** 分页数据 **/  


    private List<T> records;   


    /** 页码开始索引和结束索引 **/  


    private PageIndex pageindex;   


        /** 总页数 **/  


    private long totalpage = 1;   


    /** 每页显示记录数 **/  


       private int maxresult = 12;   


       /** 当前页 **/  


      private int currentpage = 1;   


      /** 总记录数 **/  


      private long totalrecord;   


      /** 页码数量 **/  


     private int pagecode = 10;   

  

     /** 要获取记录的开始索引 **/  


     public int getFirstResult() {   

      

      return (this.currentpage-1) * this.maxresult;   

  
    }   
  

    public int getPagecode() {   


        return pagecode;   

    }   
  

    public void setPagecode(int pagecode) {   


        this.pagecode = pagecode;   

    }   
  

    public PageView(int maxresult, int currentpage) {   


        this.maxresult = maxresult;   


        this.currentpage = currentpage;   

    }   
  

    public void setQueryResult(QueryResult<T> qr){   

             setTotalrecord(qr.getTotal());   
        setRecords(qr.getResultList());   
    }   
  

    public long getTotalrecord() {   


        return totalrecord;   

    }   
  
  

    public void setTotalrecord(long totalrecord) {   


        this.totalrecord = totalrecord;   


        setTotalpage(this.totalrecord % this.maxresult == 0 ? this.totalrecord / this.maxresult : this.totalrecord / this.maxresult + 1);   

    }   
  

    public List<T> getRecords() {   


        return records;   

    }   
  

    public void setRecords(List<T> records) {   


        this.records = records;   

    }   
  

    public PageIndex getPageindex() {   


        return pageindex;   

    }   
  

    public long getTotalpage() {   


               return totalpage;   

    }   
  

    public void setTotalpage(long totalpage) {   


        this.totalpage = totalpage;   


        this.pageindex = PageIndex.getPageIndex(pagecode, currentpage, totalpage);   

    }   
  
  
       
  
  

    /**  
     *  每页显示记录数  
     * @return  
     */  

    public int getMaxresult() {   


        return maxresult;   

    }   
  

    public int getCurrentpage() {   


        return currentpage;   

    }   
  
  
}  
import java.util.List;

/**
 * 分页显示对象
 * @param <T>
 */
public class PageView<T> {	
	/** 分页数据 **/
	private List<T> records;
	/** 页码开始索引和结束索引 **/
	private PageIndex pageindex;
        /** 总页数 **/
	private long totalpage = 1;
	/** 每页显示记录数 **/
       private int maxresult = 12;
       /** 当前页 **/
      private int currentpage = 1;
      /** 总记录数 **/
      private long totalrecord;
      /** 页码数量 **/
     private int pagecode = 10;

     /** 要获取记录的开始索引 **/
     public int getFirstResult() {
   
      return (this.currentpage-1) * this.maxresult;

	}

	public int getPagecode() {
		return pagecode;
	}

	public void setPagecode(int pagecode) {
		this.pagecode = pagecode;
	}

	public PageView(int maxresult, int currentpage) {
		this.maxresult = maxresult;
		this.currentpage = currentpage;
	}

	public void setQueryResult(QueryResult<T> qr){
             setTotalrecord(qr.getTotal());
		setRecords(qr.getResultList());
	}

	public long getTotalrecord() {
		return totalrecord;
	}


	public void setTotalrecord(long totalrecord) {
		this.totalrecord = totalrecord;
		setTotalpage(this.totalrecord % this.maxresult == 0 ? this.totalrecord / this.maxresult : this.totalrecord / this.maxresult + 1);
	}

	public List<T> getRecords() {
		return records;
	}

	public void setRecords(List<T> records) {
		this.records = records;
	}

	public PageIndex getPageindex() {
		return pageindex;
	}

	public long getTotalpage() {
               return totalpage;
	}

	public void setTotalpage(long totalpage) {
		this.totalpage = totalpage;
		this.pageindex = PageIndex.getPageIndex(pagecode, currentpage, totalpage);
	}


	


	/**
	 *  每页显示记录数
	 * @return
	 */
	public int getMaxresult() {
		return maxresult;
	}

	public int getCurrentpage() {
		return currentpage;
	}


}

 另外一个

/**  
 * 算出页码的开始索引和结束索引  
 */  
  

public class PageIndex {   

  

    /** 开始索引 */  


    private long startindex;   

  

    /** 结束索引 */  


    private long endindex;   

  

    public PageIndex(long startindex, long endindex) {   


        this.startindex = startindex;   


        this.endindex = endindex;   

    }   
  

    public long getStartindex() {   


        return startindex;   

    }   
  

    public void setStartindex(long startindex) {   


        this.startindex = startindex;   

    }   
  

    public long getEndindex() {   


        return endindex;   

    }   
  

    public void setEndindex(long endindex) {   


        this.endindex = endindex;   

    }       
  
  

    /**  
     * 算出页码的开始索引和结束索引  
     * @param viewpagecount 页码数量  
     * @param currentPage 当前页数  
     * @param totalpage 总页数  
     * @return  
     */  
  

    public static PageIndex getPageIndex(long viewpagecount, int currentPage, long totalpage){   


        long startpage = currentPage - (viewpagecount % 2 == 0 ? viewpagecount / 2 - 1 : viewpagecount / 2);   


        long endpage = currentPage + viewpagecount / 2;   


        if(startpage < 1){   


            startpage = 1;   


            if(totalpage >= viewpagecount) endpage = viewpagecount;   


            else endpage = totalpage;   

        }   
  
  

        if(endpage > totalpage){   

            endpage = totalpage;   

            if((endpage - viewpagecount)> 0) startpage = endpage - viewpagecount + 1;   


            else startpage = 1;   

        }   
  
  

        return new PageIndex(startpage, endpage);           

  
  
    }  
/**
 * 算出页码的开始索引和结束索引
 */

public class PageIndex {

    /** 开始索引 */
    private long startindex;

    /** 结束索引 */
    private long endindex;

    public PageIndex(long startindex, long endindex) {
        this.startindex = startindex;
        this.endindex = endindex;
    }

    public long getStartindex() {
        return startindex;
    }

    public void setStartindex(long startindex) {
        this.startindex = startindex;
    }

    public long getEndindex() {
        return endindex;
    }

    public void setEndindex(long endindex) {
        this.endindex = endindex;
    }    


    /**
     * 算出页码的开始索引和结束索引
     * @param viewpagecount 页码数量
     * @param currentPage 当前页数
     * @param totalpage 总页数
     * @return
     */

    public static PageIndex getPageIndex(long viewpagecount, int currentPage, long totalpage){
        long startpage = currentPage - (viewpagecount % 2 == 0 ? viewpagecount / 2 - 1 : viewpagecount / 2);
        long endpage = currentPage + viewpagecount / 2;
        if(startpage < 1){
            startpage = 1;
            if(totalpage >= viewpagecount) endpage = viewpagecount;
            else endpage = totalpage;
        }


        if(endpage > totalpage){
            endpage = totalpage;
            if((endpage - viewpagecount)> 0) startpage = endpage - viewpagecount + 1;
            else startpage = 1;
        }


        return new PageIndex(startpage, endpage);        


    }

  下面是Freemarker的分页宏

Xml代码 Freemarker分页 Freemarker分页Freemarker分页
  1. <#-- 总页数,当前页 -->  
  2. <#macro pagination pageView>     
  3.     <div class="pages">  
  4.         <label>共${pageView.totalpage}页,约${pageView.totalrecord}条数据</label>  
  5.         <#if pageView.currentpage != 1>  
  6.             <a href="javascript:pageinationView(1)" title="首页" class="nav"><span>首页</span></a>  
  7.             <a href="javascript:pageinationView(${pageView.currentpage - 1})" title="上一页" class="nav"><span>上一页</span></a>  
  8.         <#else>  
  9.             <span>首页</span>  
  10.             <span>上一页</span>  
  11.         </#if>  
  12.            
  13.         <#list pageView.pageindex.startindex..pageView.pageindex.endindex as index>  
  14.             <#if pageView.currentpage == index>  
  15.                 <a href="#" class="current">${index}</a>  
  16.             <#else>  
  17.                 <a href="javascript:pageinationView(${index})" title="第${index}页" >${index}</a>     
  18.             </#if>     
  19.         </#list>     
  20.            
  21.         <#if pageView.currentpage != pageView.totalpage>  
  22.             <a href="javascript:pageinationView(${pageView.currentpage + 1})" title="下一页" class="nav"><span>下一页</span></a>  
  23.             <a href="javascript:pageinationView(${pageView.totalpage})" title="未页" class="nav"><span>未页</span></a>  
  24.         <#else>  
  25.             <span>下一页</span>  
  26.             <span>未页</span>  
  27.         </#if>  
  28.     </div>  
  29.     <script type="text/javascript">  
  30.         function pageinationView(pageNum) {   
  31.             document.getElementById("pageNum").value=pageNum;   
  32.             document.getElementById("pageinationForm").submit();   
  33.         }   
  34.     </script>  
  35. </#macro>   
<#-- 总页数,当前页 -->
<#macro pagination pageView>  
	<div class="pages">
		<label>共${pageView.totalpage}页,约${pageView.totalrecord}条数据</label>
		<#if pageView.currentpage != 1>
			<a href="javascript:pageinationView(1)" title="首页" class="nav"><span>首页</span></a>
			<a href="javascript:pageinationView(${pageView.currentpage - 1})" title="上一页" class="nav"><span>上一页</span></a>
		<#else>
			<span>首页</span>
			<span>上一页</span>
		</#if>
		
		<#list pageView.pageindex.startindex..pageView.pageindex.endindex as index>
	        <#if pageView.currentpage == index>
	        	<a href="#" class="current">${index}</a>
	        <#else>
	            <a href="javascript:pageinationView(${index})" title="第${index}页" >${index}</a>  
	        </#if>  
	    </#list>  
	    
		<#if pageView.currentpage != pageView.totalpage>
			<a href="javascript:pageinationView(${pageView.currentpage + 1})" title="下一页" class="nav"><span>下一页</span></a>
			<a href="javascript:pageinationView(${pageView.totalpage})" title="未页" class="nav"><span>未页</span></a>
		<#else>
			<span>下一页</span>
			<span>未页</span>
		</#if>
	</div>
	<script type="text/javascript">
		function pageinationView(pageNum) {
			document.getElementById("pageNum").value=pageNum;
			document.getElementById("pageinationForm").submit();
		}
	</script>
</#macro>
 

页面的引用

Html代码 Freemarker分页 Freemarker分页Freemarker分页
  1. <!--分页 -->  
  2.             <form id="pageinationForm" method="post" action="clazz-list">  
  3.                 <input type="hidden" id="pageNum" name="pageNum" value="${pageNum}" />  
  4.             </form>  
  5.             <#import "*/main/main-page.ftl" as pager>  
  6.             <@pager.pagination pageViewpageView=pageView/>  
  7.            <!-- 分页 -->  
<!--分页 -->
            <form id="pageinationForm" method="post" action="clazz-list">
				<input type="hidden" id="pageNum" name="pageNum" value="${pageNum}" />
			</form>
            <#import "*/main/main-page.ftl" as pager>
			<@pager.pagination pageView=pageView/>
           <!-- 分页 -->

 现在应该出来了基本的分页。

相关推荐