今天把分页分离出来了,真TMD爽啊,哈哈哈

其实很普通的功能,今天把分页分离出来,放到一个 ftl里边,以后用的话只需要引入即可,真TMD爽a

本文只是记录一下,自己爽一爽的,不能作为例子(代码没有完全粘过来),而且有待改进。。。

前台使用:

<#include "include/page.ftl" />

后台Action需要设置好 PageModel

public class PageModel {

   private long count;
   private long totalPage;
   private long currentPage;
   private long pageSize;

   private Map<String, String> pageParams;

   private String requestUrl;

   // 构造方法、set、get已隐藏
}
pageModel = new PageModel(products.getCount(), products.getTotalPage(), products.getCurrentPage(), products.getPageSize());
pageParams.put("key", keyWord);
pageParams.put("bp", bestPrice ? "true" : "false");
pageParams.put("lp", lp);
pageParams.put("hp", hp);
pageParams.put("cid", categoryId);
pageParams.put("prov", providerId);
pageParams.put("order", order);
pageModel.setPageParams(pageParams);
pageModel.setRequestUrl("/list");

当然,page.ftl :

<#if pageModel.totalPage gt 1>
<div class="page-nav">
   <#if pageModel.currentPage gt 1>
        <a href="${pageModel.requestUrl}?pageNumber=<#if pageModel.currentPage-1 gt 0>${pageModel.currentPage-1}<#else>1</#if>&pageSize=${pageModel.pageSize}<#list pageModel.pageParams?keys as key>&${key}=${pageModel.pageParams.get(key)}</#list>"
           class="ib pre">&lt;&lt; Previous</a>
   </#if>

   <#if pageModel.currentPage == 1>
        <span class="cur">1</span>
   <#else>
        <a href="${pageModel.requestUrl}?pageNumber=1&pageSize=${pageModel.pageSize}<#list pageModel.pageParams?keys as key>&${key}=${pageModel.pageParams.get(key)}</#list>"
           class="ib">1</a>
   </#if>

   <#if pageModel.currentPage gt 4>
        <span class="dot">...</span>
   </#if>

   <#list 0..4 as index >
      <#if index == 2 && pageModel.currentPage gt 1 && pageModel.currentPage lt pageModel.totalPage>
            <span class="cur">${pageModel.currentPage}</span>
      <#else>
         <#if (pageModel.currentPage-2+index gt 1) && (pageModel.currentPage-2+index lt pageModel.totalPage) >
                <a href="${pageModel.requestUrl}?pageNumber=${pageModel.currentPage-2+index}&pageSize=${pageModel.pageSize}<#list pageModel.pageParams?keys as key>&${key}=${pageModel.pageParams.get(key)}</#list>"
                   class="ib">${pageModel.currentPage-2+index}</a>
         </#if>
      </#if>
   </#list>

   <#if pageModel.totalPage - pageModel.currentPage gte 4>
        <span class="dot">...</span>
   </#if>

   <#if pageModel.currentPage == pageModel.totalPage>
        <span class="cur">${pageModel.currentPage}</span>
   <#else>
        <a href="${pageModel.requestUrl}?pageNumber=${pageModel.totalPage}&pageSize=${pageModel.pageSize}<#list pageModel.pageParams?keys as key>&${key}=${pageModel.pageParams.get(key)}</#list>"
           class="ib">${pageModel.totalPage}</a>
   </#if>

   <#if pageModel.currentPage != pageModel.totalPage>
        <a href="${pageModel.requestUrl}?pageNumber=<#if pageModel.currentPage+1 gt pageModel.totalPage>${pageModel.totalPage}<#else>${pageModel.currentPage+1}</#if>&pageSize=${pageModel.pageSize}<#list pageModel.pageParams?keys as key>&${key}=${pageModel.pageParams.get(key)}</#list>"
           class="ib next">Next &gt;&gt;</a>
   </#if>
</div>
</#if>

只需要维护这一个page就可以了

时间: 2024-08-29 05:39:11

今天把分页分离出来了,真TMD爽啊,哈哈哈的相关文章

华为教小米如何做人:雷军吹牛逼遭通信博士打脸

小米这次是真拼了,雷军现在不说奥氏304不锈钢.也不借鉴友商的“手感真TM的爽”,重回“跑分”之路推广了红米note2之后,这次为了小米4C的推广,来了个“高铁模式”. 可是这句话最先引来的是认证为通信专业教师.科学松鼠会会员的@奥卡姆剃刀 打脸,这位通信专业人士认为“多普勒效应与快速过区切换是高铁两大问题,通常依靠扩大重叠区和基站协同技术来解决,华为在算法上有深入研究.总之要靠上端的基站来解决,而不是下端的手机,手机单方面改动若无基站的相应配合,恐怕没有作用.” 当然所谓的“高铁模式”,华为在

Jsp分页实例---真分页

网页的分页功能的实现比较简单,实现方法也多种多样. 今天总结一个简单的Jsp真分页实例. 首先,提到分页就要先明确一个概念,何为真分页何谓假分页. 假分页:一次性从数据库读出表的所有数据一次性的返回给客户端,由js来控制每一页的显示. 真分页:由程序控制,每一次只返回一页大小的数据,显示到客户端. 由此可以很清楚的分辨出真假分页各自的优缺点: 假分页:由于一次性读出所有数据并返回给客户端,如果数据量庞大,所以这一次的动作可能是非常消耗服务器资源和带宽的, 但是返回给客户端以后就非常轻松了,客户在

WPF之分页查询

分页查询,很早就听过了,尤其是在"高校"的项目中更是听得比较多,一直想着自己研究一下,看看到底分页查询有什么神秘之处.但是,一直因为自己在做其他的内容,所以一直没有好好的学习一下.现在,做统计查询的时候,因为查询的数据量比较大,差不多一秒一条数据,甚至是一秒钟600条数据的时间查询,所以不得不采用分页查询了. 我们常说的分页查询分为两种.一种是假分页,也就是一次性的把需要的数据全部查出,然后在显示的时候是分页显示的.这样做的好处就是直观的给用户显示出需要的内容,而不用采用滚动条来滚动查

ASP.NET——真假分页

所谓分页,就是把所有要显示的内容分成n多页来显示.那为什么要用分页而不直接全部显示呢?这就好比一本书,我们可以用一张纸写完全部书的内容,但实际上并不是这么做的.我们把网页分成一页一页的,其实很大程度上是在为用户考虑,极大的方便用户. 分页有两种,一种是真分页,一种是假分页. 假分页的"假"在于我已经把所有的数据取出来了,只是在显示的时候给予一定的控制来到达分页的效果. 真分页的"真"在于所有的数据并非一次取出,而是真真正正的用户查看哪一页才去数据库中取出所需的内容.

repeater控件实现分页

repeater控件实现排序的方法,今天我再向大家介绍repeater控件如何实现分页的效果. 分页分为真分页和假分页. 真分页:控件上一页需要显示多少数据,就从数据库取出并绑定多少数据,每次换页时都需要访问数据库. 假分页:从数据库一次性取出所有数据绑定到控件上,再将所有数据根据一页显示多少条而分页. 从以上二者的概念上我们可以看出,区别在于分页时从数据库读取信息的方式,真分页的效率无疑是最高的.假分页在首次页面加载的时候会比较慢(如果数据量较多). 二者其实各有各的优缺点,可根据需要来自行选

Asp.Net北大青鸟总结(四)-使用GridView实现真假分页

这段时间看完了asp.net视频,但是感觉到自己的学习好像没有巩固好,于是又在图书馆里借了几本关于asp.net的书感觉真的很好自己大概对于asp.net能够实现基本的小Demo,但是我知道只有真正的使用才能够有所收获,而且自己的认识度还是要进一步的学习,在这一部分的学习中自己也算是对于分页有了一个基本的了解了吧,也用它做出来的几个基本的Demo,那么接下来我们来看一下这个控件的用于真假分页的一些使用方法. 一.什么是真假分页 1.假分页: 假分页虽然在界面上实现了分页的,但是他并没有实现分页,

大话分页(一)

分页是一项人性化的功能,也是查看大量显示数据的一种解决方案.然而就分页功能的实现来说,分页是多种多样的.那我们在项目中用到的时候,我该使用哪种方式进行分页呢?下面我将汇总一下分页查询的各种实现,并加以比对,当你使用时,做出较好的选择(本文讨论范畴只在真分页,下面谈到的分页也特指真分页). 分页共性 凡是分页,无论使用什么方式实现,它都是以从第几条数据到第几条数据这样的思路实现的,都需要提供两个参数: PageNo:当前页号: PaseSize:每页显示的数据. 三种数据的分页方式的比较 MySq

【ASP.NET】Aspnetpager对GridView分页,并导出Excel

一.前言 谈到分页,在网页上简直到处都是.网络的资源越来越多,如果不用分页技术来显示,就会拖拉很长很长.下面给大家分享分页技术. 二.基本要点 当要显示数据量足够大的时候,我们往往采用分页显示的处理办法.分页有真分页和假分页. 假分页:从数据库中取出所有的数据,然后分页在界面上显示.访问一次数据库,但由于选择的数据量比较大,所以第一次花费时间比较长,但之后每一页的显示都是直接.快速的,避免对数据库的多次访问. 真分页:确定要显示的数量和内容,然后每次都去数据库取出该少量数据,优点是数据量小,缺点

做一个群组聊天页面

要做个群组聊天的页面,参考微信的web版本,大致就是分为左右两列,左边是群组列表,右边是群组中的对话 示例图如下: 这个页面风格是使用ACE做的,再次啧啧下,ACE真TMD强大,这个页面的风格很招人喜欢. 做这个页面刚开始的时候我走了弯路,初步想的是使用iframe,左侧群组聊天页面是页面加载的,右侧的群组对话框是个iframe.然后点击左侧的任意一个群组,右侧的对话iframe就修改src,然后更新对话的时候也超简单,直接iframe重新加载一下就ok了. 但是呢,后来发现,我这样需要写的co