分页 页数过长省略... 怎么写?

来源:9-4 卖家订单-controller-翻页

习惯沉淀

2019-05-15

老师留了一个课堂作业,自己没有研究出来 ,希望老师说一下思路  说一下思路就好  


写回答

3回答

慕尼黑6523987

2019-07-25

<#list 1..orderDTOPage.getTotalPages() as index>
   <!--当前页不可点击-->
   <#if currentPage == index>
       <li class="disabled"><a href="#">${index}</a></li>
   <!--如果循环到了当前页加上限制显示条数(该例为前后各显示10条),之后的循环不在进行-->
   <#elseif index gt currentPage+10>
           <li><a href="#">...</a></li>
        <#break >
   <!--如果循环在当前页减去限制显示条数(该例为前后各显示10条),
     处理放在下一个else之中,当前循环不进行任何操作-->
   <#elseif index lt currentPage-10>
       <#continue >
   <!--处理放在这。正好到限制页的时候。显示...-->
   <#elseif index == currentPage-10>
       <li><a href="#">...</a></li>
   <#else >
        <li><a href="list?page=${index}&size=${size}">${index}</a></li>
   </#if>
</#list>

2
0

廖师兄

2019-05-15

思路就是要在模版for循环里,判断后才决定是否显示。

1
2
廖师兄
回复
习惯沉淀
没有写好的。没写出来,是卡在哪呢。
2019-05-17
共2条回复

冲锋战神

2019-06-02

<#-- 列表 -->
<#-- 期望的页码标签长度 -->
<#assign expectSize = 7>
<#-- 期望的当前页码标签前展示的页码标签数量 -->
<#assign expectBefore = 2>
<#-- 初始化长度计数, 用于统计实际的页码标签个数 -->
<#assign listSize = 0>
<#-- 遍历 -->
<#list 1..orderDtoPage.totalPages as index>
    <#-- 页码标签长度小于期望值才继续 -->
    <#if listSize lt expectSize>
        <#-- 索引 大于 (当前页码 - 当前页码前的个数), 也就是说当前标签前只有expectBefore个页码标签 -->
        <#if index gte (currentPage - expectBefore)>
            <#assign listSize = listSize + 1><#-- 每渲染一个页码标签, 计数加一 -->
            <!-- 渲染页码标签 -->
            <#if index == currentPage>
                <li class="disabled"><a href="#">${index}</a></li>
                <#else>
                <li><a href="/sell/seller/order/list?page=${index}&size=${size}">${index}</a></li>
            </#if>

            <#else>
            <#-- 处理页码末尾页码数不足的情况, 其实就是保持页码标签数量一直等于expectSize, 是对上面条件生成的便签数不足时的补充 -->
                <#if index gt (orderDtoPage.totalPages - expectSize)>
                    <#assign listSize = listSize + 1><#-- 每渲染一个页码标签, 计数加一 -->
                     <!-- 渲染页码标签, 一段重复代码 -->
                    <#if index == currentPage>
                        <li class="disabled"><a href="#">${index}</a></li>
                        <#else>
                        <li><a href="/sell/seller/order/list?page=${index}&size=${size}">${index}</a></li>
                    </#if>
                </#if>
        </#if>
    </#if>
</#list>
中间列表这块, 上一页下一页就不放上来了, 太占地方. 效果如下: 

//img.mukewang.com/szimg/5cf361090001136505700071.jpg

//img.mukewang.com/szimg/5cf3610900011cc905820053.jpg

//img.mukewang.com/szimg/5cf3610900014f5604510053.jpg

这是百度贴吧的截图, 我就是模仿这个的, 没有按中间是 ... 的来做. 其实可以直接加一个输入框直接跳去多少页也可以.

其实代码没多少, 就是上面有一些重复代码段, 还有很多注释, 我也是今天刚接触 freemarker , 我想肯定有办法去除重复的代码段, 但是我不会...

做完我就传了, 有没有bug不知道, 效果是达到了, 仅供参考.

0
0

Spring Boot双版本(1.5/2.1) 打造企业级微信点餐系统

从0到1开发中小型企业级Java应用,并学会迭代重构技巧

6410 学习 · 5247 问题

查看课程