`

FreeMarker自定义分页标签(仿javaeye)及使用示例

阅读更多

1. 先贴出分页标签pager.ftl的全部代码:

----------------------------------------------------------------------------------------------------------------------

<#-- 自定义的分页指令 (powered by qiujy)
    属性:
   pageNo      当前页号(int类型)
   pageSize    每页要显示的记录数(int类型)
   toURL       点击分页标签时要跳转到的目标URL(string类型)
   recordCount 总记录数(int类型)
 -->
<#macro pager pageNo pageSize toURL recordCount> 
  <#-- 定义局部变量pageCount保存总页数 -->
  <#assign pageCount=((recordCount + pageSize - 1) / pageSize)?int> 
 <#if recordCount==0><#return/></#if>
<#-- 输出分页样式 -->
<style type="text/css">
.pagination {padding: 5px;float:right;font-size:12px;}
.pagination a, .pagination a:link, .pagination a:visited {padding: 2px 5px;margin: 2px;border: 1px solid #aaaadd;text-decoration: none;color: #006699;}
.pagination a:hover, .pagination a:active {border: 1px solid #ff0000;color: #000;text-decoration: none;}
.pagination span.current {padding: 2px 5px;margin: 2px;border: 1px solid #ff0000;font-weight: bold;background-color: #ff0000;color: #FFF;}
.pagination span.disabled {padding: 2px 5px;margin: 2px;border: 1px solid #eee; color: #ddd;}
</style>
<#-- 页号越界处理 -->
  <#if (pageNo > pageCount)>
    <#assign pageNo=pageCount>
  </#if>
  <#if (pageNo < 1)>
    <#assign pageNo=1>
  </#if>
<#-- 输出分页表单 -->
<div class="pagination">
<form method="post" action="" name="qPagerForm">
<#-- 把请求中的所有参数当作隐藏表单域(无法解决一个参数对应多个值的情况) -->
<#list RequestParameters?keys as key>
<#if (key!="pageNo" && RequestParameters[key]??)>
<input type="hidden" name="${key}" value="${RequestParameters[key]}"/>
</#if>
</#list>
<input type="hidden" name="pageNo" value="${pageNo}"/>
<#-- 上一页处理 -->
  <#if (pageNo == 1)>
<span class="disabled">&laquo;&nbsp;上一页</span>
  <#else>
<a href="javascript:turnOverPage(${pageNo - 1})">&laquo;&nbsp;上一页</a>
  </#if>
<#-- 如果前面页数过多,显示... -->
 <#assign start=1>
 <#if (pageNo > 4)>
    <#assign start=(pageNo - 1)>
<a href="javascript:turnOverPage(1)">1</a>
<a href="javascript:turnOverPage(2)">2</a>&hellip;
 </#if>
<#-- 显示当前页号和它附近的页号 -->
 <#assign end=(pageNo + 1)>
 <#if (end > pageCount)>
  <#assign end=pageCount>
 </#if>
  <#list start..end as i>
    <#if (pageNo==i)>
<span class="current">${i}</span>
  <#else>
<a href="javascript:turnOverPage(${i})">${i}</a>     
    </#if>
  </#list>
<#-- 如果后面页数过多,显示... -->
  <#if (end < pageCount - 2)>
&hellip; 
  </#if>
  <#if (end < pageCount - 1)>
<a href="javascript:turnOverPage(${pageCount - 1})">${pageCount-1}</a>
  </#if>
  <#if (end < pageCount)>
<a href="javascript:turnOverPage(${pageCount})">${pageCount}</a>
  </#if>
<#-- 下一页处理 -->
  <#if (pageNo == pageCount)>
<span class="disabled">下一页&nbsp;&raquo;</span>
  <#else>
<a href="javascript:turnOverPage(${pageNo + 1})">下一页&nbsp;&raquo;</a>
  </#if>
</form>
<script language="javascript">
  function turnOverPage(no){
    var qForm=document.qPagerForm;
    if(no>${pageCount}){no=${pageCount};}
    if(no<1){no=1;}
    qForm.pageNo.value=no;
    qForm.action="${toURL}";
    qForm.submit();
  }
</script>
</div>
</#macro>

----------------------------------------------------------------------------------------------------------------------

2. 再贴出使用图效:

  全部查询:

 

  根据名称模糊搜索:

3. 对应的源代码和使用示例,我已经上传到CSDN的资源库中了,对应链接为:http://download.csdn.net/source/1751655

4
0
分享到:
评论
1 楼 wenxiang_tune 2009-10-25  
为什么要传到csdn(rubbish)上  下东西还要分!

相关推荐

    freemarker 自定义freeMarker标签

    例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容。 此外,FreeMarker还支持自定义函数,它们类似于JavaScript中的函数,可以接收参数并...

    freemarker自定义的通用分页指令(标签)源码和使用示例

    一个用FTL定义的非常通用数据分页指令,有源码,有使用示例。使用效果图可以参看本人博客中的相关文章:http://blog.csdn.net/qjyong/archive/2009/10/18/4693142.aspx

    freemarker自定义分页标签宏

    在这个主题“freemarker自定义分页标签宏”中,我们将深入探讨如何在FreeMarker中创建自定义的分页标签宏,以便更有效地管理和展示大量数据。 首先,分页是一种常见的网页设计技术,用于将大量数据分割成小块,使...

    Freemarker 自定义标签 简单案例

    在提供的"TestFreemarkerDiy"示例中,可能包含了一个简单的自定义标签实现以及一个演示如何使用该标签的Freemarker模板文件。通过分析这个示例,我们可以学习如何在实际项目中应用自定义标签,以提高模板的可维护性...

    spring mvc freemarker 自定义标签

    下面将详细介绍Spring MVC与Freemarker自定义标签的使用。 首先,我们需要了解Freemarker的基础。Freemarker是一个基于模板的语言,它的主要任务是根据数据模型生成输出。在Spring MVC中,Freemarker模板通常用于...

    自定义分页标签源代码

    开发者可能结合Struts1标签库与自定义分页标签一起使用,实现更复杂的业务逻辑。 4. **实例化分页类**: 分页标签可能需要一个分页类的实例,这个类通常会包含当前页数、总页数、每页大小等属性,以及相关的计算...

    非常好用的自定义分页标签

    在IT行业中,自定义分页标签是Web应用开发中常用的一种技术,特别是在Java Web开发领域。自定义标签(Custom Tags)允许开发者创建自己的HTML标签,这些标签可以封装复杂的逻辑,提高代码的可读性和可维护性。在这个...

    freemarker的分页功能

    - **Freemarker模板中的分页逻辑**:在Freemarker模板中,使用`&lt;#list&gt;`指令遍历分页后的数据列表,并在模板中展示。此外,还需要添加分页导航,包括当前页码显示、上一页/下一页链接等,以便用户操作。 #### 2. ...

    实现通过jfinal框架自动扫描freemarker的自定义标签.zip

    5. **使用自定义标签**:完成上述步骤后,你就可以在FreeMarker模板中使用自定义标签了。在模板文件中,自定义标签通常以`&lt;@yourTag&gt;`的形式出现。 以下是实现这个功能的一些关键代码片段: ```java // 自定义标签...

    FreeMarker通用的分页

    在FreeMarker中实现通用的分页功能是提高Web应用程序性能和用户体验的重要一环。 ### FreeMarker通用分页知识点解析 #### 1. 分页宏(Macro)定义 FreeMarker中的宏允许我们封装可重用的代码块,这在实现通用分页...

    Freemarker分页

    4. **Freemarker模板**:在Freemarker模板中,你可以使用Struts2提供的`&lt;s:iterator&gt;`标签遍历当前页的数据,同时使用自定义的Freemarker宏或Struts2的`&lt;s:url&gt;`标签生成分页链接。例如,可以创建一个`pagination....

    Struts2、Spring、Freemarker自定义标签

    Freemarker支持条件判断、循环结构、内置函数,以及自定义标签,增强了模板的灵活性。与JSP相比,Freemarker通常被认为更简洁、易读且更易于维护。 将这三个框架结合使用,可以构建出高效、灵活的Java Web应用。...

    freemark 自定义标签 总结

    Freemarker是一个强大的Java模板引擎,常用于动态生成HTML、XML等Web页面,尤其是在Java Web应用中。...在阅读《freemarker 自定义标签 总结》这篇博文时,可以更深入地探讨这些话题,获取更多实用技巧和示例。

    freemarker 实现宏分页

    在`freemarker 标签分页.txt`文件中,可能包含了具体的宏定义示例或使用方法,你可以参考其中的内容进行实践。记住,学习和理解FreeMarker的宏机制是关键,这有助于你在实际项目中灵活应用和扩展分页功能。通过这种...

    freemarker及jeecms标签使用学习文档

    这篇学习文档将带你深入理解Freemarker的基础知识和高级特性,并通过Jeecms模板标签的使用,让你更好地掌握实际开发中的应用。 1. **Freemarker基础** - **模板语言**:Freemarker使用简单的文本模板语言,将数据...

    Freemarker简介及标签详解大全

    Freemarker 简介及标签详解大全 FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写。FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序。虽然 FreeMarker ...

    使用freemarker扩展struts标签

    6. **在模板中使用标签**: 最后,在你的FreeMarker模板文件中,你可以像使用其他内置标签一样使用你的自定义标签。 通过这种方式,开发者可以创建出高度定制的UI组件,提高代码的可读性和可维护性。自定义标签使得...

    freemarker+struts2仿QQ分页效果

    不过由于小弟资历浅薄,也没心思看,主要是strut2的标签本来我就觉得不大习惯,另外上个月接触了freemarker后,实在是用的爽死了,为什么不用freemarker的macro指令写个通用的分页呢?马上想到模仿TX的...

    httpclient,freemarker的静态化分页

    总的来说,`httpclient`与`freemarker`在页面静态化分页中的结合使用,既保证了数据的动态获取,又实现了静态文件的高效生成,是Web开发中一种实用的优化手段。通过合理的代码组织和设计,可以构建出高效且易于维护...

    freemarker_struts2分页

    在这个模板中,我们使用了FreeMarker的`&lt;#list&gt;`标签来遍历数据列表,并展示了每条数据的字段。分页导航部分根据当前页生成了上一页、下一页和中间页码的链接。注意,这里的链接需要与Action的参数对应,例如通过...

Global site tag (gtag.js) - Google Analytics