2个后台分页,仅供参考。

 

FreeMarker后台分页

page方法名,url,第2个page  是后台分页对象,里面有 pageNo,totalPage等参数。

ageVo {
	private static Logger log = Logger.getLogger(PageVo.class);

	public static final Integer DEFAULT_PAGE_SIZE = 20;
	public static final Integer MAX_PAGE_SIZE = DEFAULT_PAGE_SIZE * 2;

	// 前端传入
	/** 第几页 */
	protected Integer pageNo = 1;
	/** 每页显示条数 */
	protected Integer pageSize = 10;

	// 计算得到
	/** 总记录数 */
	protected Integer totalCount = 0;
	/** 总共有多少页 */
	protected Integer totalPage = 0;

	/** 第1条记录的编号 */
	protected Integer startNo = 1;
	/** 最后1条记录的编号 */
	protected Integer endNo = 1;

	/** 表格中的数据 */
	protected List<?> rows;
}
<#macro page url page maskSize=5>
	<#assign url2="${url?url?replace('%2F','/')?replace('%3D','=')?replace('%3F','?')?replace('%26','&')}">
    <#assign number = page.pageNo>
    <#assign pages = page.totalPage>
      <#if pages == 0>
        <#return>
    </#if>
    
    <#if (maskSize % 2) == 0>
        <#assign maskSize = maskSize + 1>
    </#if>
    <#assign PadNum = (maskSize / 2)?int>   
    
	<#assign startNumber = 1>
	<#assign endNumber = 1>
    <ul class="pagination">
    <#if pages <= maskSize >
		<#assign startNumber = 1>
		<#assign endNumber = pages>
	<#elseif (number - PadNum <= 0)>
		<#assign startNumber = 1>
		<#assign endNumber = maskSize>
	<#elseif (number + PadNum > pages)>
		<#assign startNumber = pages - maskSize + 1>
		<#assign endNumber = pages>
	<#else>
		<#assign startNumber = number - PadNum>
		<#assign endNumber = number + PadNum>
    </#if>
     
    <#if (number == 1)>
       <li><a href="javascript:void(0);">首页</a></li>
	   <li><a href="javascript:void(0);">上一页</a></li>
    <#else>
           <li><a href="${buildPageUrl(url2,1,page)}">首页</a></li> 
           <li><a href="${buildPageUrl(url2,page.pageNo-1,page)}">上一页</a></li>     
    </#if>
  
    <#list startNumber..endNumber as pageNo>
    	<#if (number == pageNo)>
			<li class="active"><a href="javascript:;">${pageNo}</a></li>
		<#else>
	       <li> <a href="${buildPageUrl(url2,pageNo,page)}">${pageNo?int?c}</a></li>        
        </#if> 
    </#list>
    
    <#if (number == pages)>
		  <li><a href="javascript:void(0);" class="disabled">下一页</a></li>
		  <li><a href="javascript:void(0);" class="disabled">尾页</a></li>
    <#else>
        <li><a href="${buildPageUrl(url2,page.pageNo+1,page)}" >下一页</a></li>   
         <li><a href="${buildPageUrl(url2,page.pages,page)}">尾页</a></li>   
    </#if>
	<li><span>共${page.totalPage}页</span></li>
	</ul>
</#macro>

<#function buildPageUrl url pageNo data>
      <#if url?contains('?') >
              <#assign pageUrl = "${url}&pageNo=${pageNo}&pageSize=${data.pageSize}">
           <#else>
             <#assign pageUrl = "${url}?pageNo=${pageNo}&pageSize=${data.pageSize}">
      </#if>
    
    <#if data.orderBy != null>
      <#assign pageUrl ="${pageUrl}&orderBy=${data.orderBy}"/>
    </#if>
    <#if data.order != null>
      <#assign pageUrl ="${pageUrl}&order=${data.order}"/>
    </#if>
     <#if data.startDate != null>
      <#assign pageUrl ="${pageUrl}&startDate=${data.startDate}"/>
    </#if>
     <#if data.endDate != null>
      <#assign pageUrl ="${pageUrl}&endDate=${data.endDate}"/>
    </#if>
    <#return pageUrl/>
</#function>

 

JFinal enjoy后台分页

 

<!-- jfinal enjoy模版,分页函数,只负责展示,不存在计算 -->
<!-- layui 分页样式 -->
#define fnPage(url,page)
     #if(page.pages<=0)
        return
     #end

      <div id="micronews-details-test" style="text-align: center;">
		<div class="layui-box layui-laypage layui-laypage-default" id="layui-laypage-1">
			    #if(page.current == 1)>
			      <a href="javascript:void(0);"  class="layui-laypage-prev layui-disabled">首页</a>
				  <a href="javascript:void(0);"  class="layui-laypage-prev layui-disabled">上一页</a>
			    #else
			          <a href="#@buildPageUrl(url,1,page)">首页</a> 
			          <a href="#@buildPageUrl(url,page.current-1,page.size)">上一页</a>     
			   #end
			  
			  #for(pageNo = page.startNumber; pageNo <= page.endNumber; pageNo++)
		   		  #if(page.current== pageNo)
		   		      	<span class="layui-laypage-curr"><em class="layui-laypage-em"></em><em>#(pageNo)</em></span>
		   		  #else
		   		     <a href="#@buildPageUrl(url,pageNo,page.size)">#(pageNo)</a>        
		   		  #end
		   	 #end
		
			    #if (page.current == page.pages)
					 <a href="javascript:void(0);" class="disabled"  class="layui-laypage-prev layui-disabled">下一页</a>
					 <a href="javascript:void(0);" class="disabled"  class="layui-laypage-prev layui-disabled">尾页</a>
			    #else
			       <a href="#@buildPageUrl(url,page.current+1,page.size)">下一页</a>   
			        <a href="#@buildPageUrl(url,page.pages,page.size)">尾页</a>   
			    #end
				<span>共#(page.pages)页</span>
			</div>
		
		</div>
		#end

#define fnPageDetail(url,current,size)
   #(url),#(pageData)
#end


#define buildPageUrl(url,current,size)
      #if(url.contains('?'))
           #(url)¤t=#(current)&size=#(size)
      #else
           #(url)?current=#(current)&size=#(size)
      #end
#end

 

 

 

import java.io.Serializable;
import java.util.List;

import com.google.common.collect.Lists;

import lombok.Data;

@Data
public class Page<T> implements Serializable {

	private static final long serialVersionUID = 4534606231897214604L;

	/**
	 * 总数
	 */
	private int total = 0;
	/**
	 * 每页显示条数,默认 10
	 */
	private int size = 10;
	/**
	 * 当前页
	 */
	private int current = 1;
	private int pages;
	/**
	 * 查询数据列表
	 */
	private List<T> rows = Lists.newArrayList();

	public static <T> Page<T> one() {
		return new Page<T>();
	}

	public static <T, S> Page<T> build(Page<S> sourcePage, List<T> rows) {
		Page<T> page = Page.one();
		page.setCurrent(sourcePage.getCurrent());
		page.setPages(sourcePage.getPages());
		page.setSize(sourcePage.getSize());
		page.setRows(rows);
		return page;

	}

	// 模版渲染-后台分页用
	private int maskSize = 5;
	private int padNum = maskSize / 2;
	private int startNumber = 1;
	private int endNumber = 1;

	//如果需要后端分页,就需要手动调用
	public void init() {
		if (pages <= maskSize) {
			startNumber = 1;
			endNumber = pages;
		}
		else if (current - padNum <= 0) {
			startNumber = 1;
			endNumber = maskSize;
		} else if (current + padNum > pages) {
			startNumber = pages - maskSize + 1;
			endNumber = pages;
		} else {
			startNumber = current - padNum;
			endNumber = current + padNum;
		}
	}

}