Freemarker自定义分页工具类

[#--分页思路1
每页显示固定的页数
尽量保持当前页在显示的中央部位
1. 如果当前页号小于或者等于页面要显示的页数的一半 则按照以下算法计算显示
		如果总页数小于或者等于页面要显示的页数   则从第一页显示到总页数(最后一页)
		如果总页数大于页面要显示的页数  则从第一页显示到页面要显示的页数
2. 如果当前页号大于页面要显示的页数的一半,则按照以下算法计算显示
		如果总页数小于或者等于(当前页 + 页面要显示的页数的一半) 则从(当前页号-页面要显示的页数的一半) 显示到 总页数
		如果总页数大于(当前页 + 页面要显示的页数的一半) 则从(当前页号-页面要显示的页数的一半) 显示到 (当前页数号+页面要显示的页数的一半)
--]

[#macro pager url totalPage  curPage=1 class="" showPageNum=5]
	[#local halfPage=(showPageNum/2)?int/]
	[@showFirstPage url=url class=class curPage=1 /]
	[#if (curPage > 1)]
		[@showPrePage url=url class=class curPage=curPage-1 /]
	[/#if]

	[#if (halfPage>=curPage)]
		[#if (showPageNum >= totalPage)]
			[@showPage start=1 end=totalPage url=url class=class curPage=curPage/]
		[#else]
			[@showPage start=1 end=showPageNum url=url class=class curPage=curPage /]
		[/#if]
	[#else]
		[#if (curPage+halfPage>totalPage)]
			[@showPage start=(curPage-halfPage) end=totalPage url=url class=class curPage=curPage/]
		[#else]
			[@showPage start=(curPage-halfPage) end=curPage+halfPage url=url class=class curPage=curPage/]
		[/#if]
	[/#if]

	[#if (totalPage > curPage)]
		[@showNextPage url=url class=class curPage=(curPage+1) /]
	[/#if]
	[@showLastPage url=url class=class curPage=totalPage /]
	共[${totalPage}]页
[/#macro]

[#macro showPage start end  url class curPage]
	[#list start..end as page]
		[#if curPage==page]
			[${page}]
		[#else]
			<a href="${url}&pageIndex=${page}" class="${class}">${page}</a>
		[/#if]
	[/#list]
[/#macro]

[#--显示首页--]
[#macro showFirstPage url class curPage]
	<a href="${url}&pageIndex=${curPage}" class="${class}">首页</a>
[/#macro]
[#--显示上一页--]
[#macro showPrePage url class curPage]
	<a href="${url}&pageIndex=${curPage}" class="${class}">上一页</a>
[/#macro]
[#--显示下一页--]
[#macro showNextPage url class curPage]
	<a href="${url}&pageIndex=${curPage}" class="${class}">下一页</a>
[/#macro]
[#--显示尾页--]
[#macro showLastPage url class curPage]
	<a href="${url}&pageIndex=${curPage}" class="${class}">尾页</a>
[/#macro]
[#---------------------------------------------------------------------------------------------]
[#--
分页思路2
每页显示固定的页数
尽量保持当前页在显示的中央部位
1. 如果总页数小于等于页面要显示的页数  则从第一页显示到总页数(最后一页)
2. 如果总页数大于页面要显示的页数 则按照一下算法显示
		如果当前页数小于等于要页面显示的页数的一半  则从第一页显示到 页面要显示的页数个页
		如果当前页数大于要显示的页数的一半 则从 (当前页数-页面要显示的页数的一半) 显示到(当前页数+要显示的页数的一半)处
--]
[#macro new_pager url totalPage  curPage=1 class="" showPageNum=5]
	[#local halfPage=(showPageNum/2)?int/]
	[@showFirstPage url=url class=class curPage=1 /]
	[#if (curPage > 1)]
		[@showPrePage url=url class=class curPage=curPage-1 /]
	[/#if]
	[#----显示中间页面 start---]
	[#if (showPageNum>=totalPage)]
		[@showPage start=1 end=totalPage url=url class=class curPage=curPage/]
	[#else]
		[#if (halfPage>=curPage)]
			[@showPage start=1 end=showPageNum url=url class=class curPage=curPage/]
		[#else]
			[@showPage start=(curPage-halfPage) end=curPage+halfPage url=url class=class curPage=curPage/]
		[/#if]
	[/#if]
	[#----显示中间页面  end---]
	[#if (totalPage > curPage)]
		[@showNextPage url=url class=class curPage=(curPage+1) /]
	[/#if]
	[@showLastPage url=url class=class curPage=totalPage /]
	共[${totalPage}]页
[/#macro]
时间: 2024-10-23 14:22:59

Freemarker自定义分页工具类的相关文章

自定义圆形工具类

1.自定义圆形工具类 CircleImageViewUtil.java 关键点:可以自持缩放 package com.example.circleimageviewdemo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Col

c#分页工具类,完美实现List分页

using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ProjectProgress.BLL { /// <summary> /// 分页工具类 /// </summary> /// <typeparam name="T"></typeparam> public class PagingUtil<T

Java Web的分页工具类

最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: PageUtil.java 1 package util; 2 3 import java.util.Map; 4 5 /** 6 * 分页工具类 7 * @author lyh 8 * 9 */ 10 public class PageUtil { 11 private int total; //总数

安卓开发技巧二:自定义日志工具类XLog的实现

我们在开发过程中,打印日志是必不可少的一个调试环节,然而,直接使用系统自带的Log日志类,并不能满足我们实际项目的需求:假如我们现在在开发一款比较大的项目,用到打印日志的地方肯定特别多,等到真正上线的时候,我们是不希望日志依旧能够打印出的,原因很简单,不仅多少有些影响效率,更有可能导致信息的泄露,所以我们就需要把所有的日志打印语句全部取消掉,难道我们真的一个一个的去删除这些打印日志的语句吗?项目那么大,就是想删除,也得耗费大量的时间和精力!大家不用怕,笔者这就给大家带来一款控制线上版本和线下版本

java学习--基础知识进阶第十三天--反射机制的概述和字节码对象的获取方式、反射操作构造方法、成员方法、成员属性、JavaBean的概述&amp;BeanUtils的使用、自定义BeanUtils工具类

今日内容介绍 u 反射机制的概述和字节码对象的获取方式 u 反射操作构造方法.成员方法.成员属性 u JavaBean的概述&BeanUtils的使用 u 自定义BeanUtils工具类 第1章 反射机制概述.字节码对象的获取方式.反射操作构造方法.成员方法.成员属性 1.1 反射机制的概述和字节码对象的获取方式 1.1.1 反射介绍 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法        这种动态获取的以及动

分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]https://www.cnblogs.com/m-yb/p/9986309.html分页功能的实现可以使用各种插件, 笔者今日闲来无事, 写了 分页工具类 前后台代码 Java JavaScript 的 实现及思路梳理.供大家参考.分页功能的需求一般有: 当前页/每页条数/总页数/总记录数/起始记录数/数

个人常用工具类:分页工具类

import java.io.Serializable; import java.util.List; // 分页工具类 public class PageBean implements Serializable { private static final long serialVersionUID = -8741766802354222579L; private int pageSize = 5; // 每页显示多少条记录 private int currentPage = 1; //当前第

freemarker自定义分页(springboot、bootstrap4)

先看下最终效果: 源码地址:https://github.com/zhouyu629/freemarker-page-demo 实现过程 一.新建springboot项目,导入相关依赖包 <!--web组件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </d

通用分页工具类

一.本工具与数据库.框架.展现层无关.代码如下: /** * 用于分页的工具类 */ public class Pager<T> { private List<T> list = new ArrayList<T>(); //对象记录结果集 private int total = 0; // 总记录数 private int pageSize = 10; // 每页显示记录数 private int pageCount = 1; // 总页数 private int pa