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]