Freemarker分页的宏

本文深入探讨了分页技术在网页应用中的实现细节与优化策略,包括如何利用自定义分页指令来处理大量数据展示,确保用户体验流畅且高效。详细介绍了分页指令的使用方式、参数说明及内部逻辑,旨在为开发者提供实用的技术指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


<#-- 自定义的分页指令。
属性说明:
page 当前页号(int类型)
pageSize 每页要显示的记录数(int类型)
toURL 点击分页标签时要跳转到的目标URL(string类型)
totalRecords 总记录数(int类型)
使用方式:
<#if totalRecords??>
<#import "/pager.ftl" as q>
<@q.pager page=page pageSize=pageSize totalRecords=totalRecords toURL="testpager.action"/>
</#if>
-->
<#assign spring=JspTaglibs["/WEB-INF/tld/spring.tld"]>
<#macro pager page pageSize toURL totalRecords>
<#-- 定义局部变量pageCount保存总页数 -->
<#assign pageCount=((totalRecords + pageSize - 1) / pageSize)?int>
<#if totalRecords==0><#return/></#if>
<#-- 页号越界处理 -->
<#if (page > pageCount)>
<#assign page=pageCount>
</#if>
<#if (page < 1)>
<#assign page=1>
</#if>
<#-- 输出分页表单 -->
<div class="sucPath">
<div class="snPages">
<#-- 把请求中的所有参数当作隐藏表单域(无法解决一个参数对应多个值的情况)-->

<#list RequestParameters?keys as key>
<#if (key!="page" && RequestParameters[key]??)>
<input type="hidden" name="${key}" value="${RequestParameters[key]}"/>
</#if>
</#list>

<#--<form method="post" action="" name="qPagerForm">-->
<input type="hidden" id="page" name="page" value="${page}"/>
<#-- 上一页处理 -->
<#if (page == 1)>
<span class="prev"><b></b> <@spring.message code="page.previouspage"/></span>
<#else>
<#-- <span class="prev"><b></b> <a href="###" onclick="jumpPage(${page - 1},'${toURL}')">« <@spring.message code="page.previouspage"/></a></span>-->
<a href="###" class="prev" onclick="jumpPage(${page - 1},'${toURL}')"><b></b> <@spring.message code="page.previouspage"/></a>
</#if>
<#-- 如果前面页数过多,显示... -->
<#assign start=1>
<#if (page > 4)>
<#assign start=(page - 1)>
<a href="###" onclick="jumpPage(1,'${toURL}')" >1</a>
<a href="###" onclick="jumpPage(2,'${toURL}')" >2</a>
<span>…</span>
</#if>
<#-- 显示当前页号和它附近的页号 -->
<#assign end=(page + 1)>
<#if (end > pageCount)>
<#assign end=pageCount>
</#if>
<#list start..end as i>
<#if (page==i)>
<span><a class="current">${i}</a></span>
<#else>
<a href="###" onclick="jumpPage(${i},'${toURL}')">${i}</a>
</#if>
</#list>
<#-- 如果后面页数过多,显示... -->
<#if (end < pageCount - 2)>
<span>…</span>
</#if>
<#if (end < pageCount - 1)>
<a href="###" onclick="jumpPage(${pageCount - 1},'${toURL}')">${pageCount-1}</a>
</#if>
<#if (end < pageCount)>
<a href="###" onclick="jumpPage(${pageCount},'${toURL}')">${pageCount}</a>
</#if>
<#-- 下一页处理 -->
<#if (page == pageCount)>
<span href="###" class="next"><b></b> <@spring.message code="page.nextpage"/></span>
<#else>
<a href="###" class="next" onclick="jumpPage(${page + 1},'${toURL}')"><b></b> <@spring.message code="page.nextpage"/></a>
</#if>
<div><@spring.message code="page.forward"/><input id="inputPageNum" name="inputPageNum" type="text" value="" size="2" onkeyup="this.value=this.value.replace(/\D/g,'')"/>页
<input type="button" value="<@spring.message code='page.button'/>" onclick="jumpPage($('#inputPageNum').val(),'${toURL}')" class="pagesubmit">
</div>
<#--</from>-->
</div>
</div>
</#macro>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值