Freemarker自定义分页工具类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
[#--分页思路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]


上一篇:SQL 必知必会·笔记<11>创建高级联结


下一篇:什么是工控主板?工控主板可以当PC主板吗?两者有什么区别呢?