<#-- 自定义的分页指令。
属性说明:
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中创建自定义的分页标签宏,以便更有效地管理和展示大量数据。 首先,分页是一种常见的网页设计技术,用于将大量数据分割成小块,使...
标题与描述概述的知识点主要集中在Freemarker模板引擎在实现分页功能时的应用,特别是当后端数据库为MySQL的情况下。Freemarker是一个用于生成动态文本的模板引擎,它被广泛应用于Web开发中,用于将数据模型转换成...
综上所述,这个测试示例展示了如何结合Java后端工具类和FreeMarker模板实现一个分页功能,包括计算分页信息、在模板中创建可重用的分页宏以及在Action中处理用户请求。通过这种方式,开发者可以更好地组织代码,保持...
一个用FTL定义的非常通用数据分页指令,有源码,有使用示例。使用效果图可以参看本人博客中的相关文章:http://blog.csdn.net/qjyong/archive/2009/10/18/4693142.aspx
本篇文章将深入探讨如何在Struts2框架下结合FreeMarker实现分页功能,帮助开发者更高效地处理大数据量的展示问题。 首先,了解分页的基本原理。分页是用来解决一次性加载大量数据导致页面加载过慢或内存压力过大的...
总结来说,Freemarker分页涉及后端数据处理、模板渲染和前端交互等多个层面。通过合理的设计和实现,可以在不增加服务器压力的同时,提供用户友好的浏览体验。理解并掌握这一技巧,对于提高Web应用的性能和用户体验...
本项目利用了`httpclient`与`freemarker`这两个工具来实现静态化的分页功能。下面将详细阐述这两个工具以及它们在静态化分页中的应用。 首先,`httpclient`是Apache的一个开源HTTP客户端库,它提供了丰富的API,...
标题 "原创 用FreeMarker宏 和 Jquery 做树(Hbiernate和JDBC版)" 描述了如何使用FreeMarker模板引擎的宏功能,结合jQuery库,创建一个可展示层次结构数据的树形视图。在这个过程中,可能涉及了两个主要的技术:...
标题“围绕分页的练习(1)(ssh+freemarker)”指的是一个关于使用Spring、Struts和Hibernate(SSH)框架以及Freemarker模板引擎进行分页功能实现的编程练习。SSH是一个流行的企业级Java web应用开发框架,而Freemarker...
在本项目中,我们主要探讨了如何利用Spring框架、Spring Data JPA、FreeMarker模板引擎以及Bootstrap前端框架来实现一个高效且用户友好的分页功能。以下是对这些技术及其在分页实现中作用的详细解释。 **Spring框架...
标题 "SSM+websocket+freemarker+mybatis分页插件+多数据源实现" 涉及到的是一个综合性的Java Web项目,其中包含了多个关键的技术组件。以下是这些技术组件的详细说明: 1. **Spring(SSM中的S)**:Spring是一个...
例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容。 此外,FreeMarker还支持自定义函数,它们类似于JavaScript中的函数,可以接收参数并...
本主题将探讨如何利用Freemarker模板生成PDF以及如何使用EasyPOI生成带有图片、水印和分页功能的Excel。 首先,让我们深入了解Freemarker。Freemarker是一个强大的模板引擎,它用于生成文本输出,如HTML、XML或PDF...
本知识点将深入探讨如何在Struts2框架中结合iBatis实现基于Freemarker模板的分页功能。 首先,我们需要理解iBatis,它是一个轻量级的Java持久层框架,它提供了一个SQL映射框架,允许开发者将SQL语句与Java代码分离...
FreeMarker技术资料大集合包括宏以及一些列中文开发手册和技术文档其中包括:FreeMarker2.3.7_Manual_zh_CN,Freemarker-2.3.16 API,FreeMarker详细讲解,FreeMarker宏和freemarker中文手册。对新手学习freemarker...
本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...