<#-- 自定义的分页指令。
属性说明:
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>
分享到:
相关推荐
好用的 freemarker 分页宏模板dom结构比较主流的一个分页一排显示10个分页按钮(想定制的话把页码提取出来做为参数即可)pagenav.previousPage 存着上一页pagenav.totalPage 总页数pagenav.pageNo 当前页面页码page...
Freemarker分页是Web开发中的一个重要概念,它主要用于在大量数据展示时,将结果集分割成多个小块,每次只加载一部分数据,提高页面加载速度并提升用户体验。在这个例子中,我们看到的是如何在使用Struts2框架的基础...
分页宏可以进一步优化,例如添加“跳转到任意页”功能,或者支持多种分页样式。此外,考虑性能问题,可以添加缓存机制,减少不必要的数据库查询。 在`freemarker 标签分页.txt`文件中,可能包含了具体的宏定义示例...
分页宏(Macro)定义 FreeMarker中的宏允许我们封装可重用的代码块,这在实现通用分页时显得尤为重要。宏`genPagination`是为分页而创建的核心组件,其参数包括: - `url`:指定的URL,用于构建页面链接。 - `...
在这个主题“freemarker自定义分页标签宏”中,我们将深入探讨如何在FreeMarker中创建自定义的分页标签宏,以便更有效地管理和展示大量数据。 首先,分页是一种常见的网页设计技术,用于将大量数据分割成小块,使...
综上所述,这个测试示例展示了如何结合Java后端工具类和FreeMarker模板实现一个分页功能,包括计算分页信息、在模板中创建可重用的分页宏以及在Action中处理用户请求。通过这种方式,开发者可以更好地组织代码,保持...
在设计时,可能会复用部分EditPage的模板代码,通过Freemarker的`<#macro>`宏定义和`<@call>`调用来实现代码复用。 4. **Detail.ftl**:详情页面模板,用于展示单个数据项的所有详细信息。通常包含大量读取性好的...
同时,防止Excel宏病毒,可以禁用导出文件的宏。 以上就是Java在Web项目中导出Excel的基本原理和实现方法。实际应用中,还需要根据项目需求进行调整和优化,例如,添加分页、排序、过滤等功能,或者集成前端框架如...