文档章节

jfinal中freemarker分页模版指令

SPPan
 SPPan
发布于 2017/06/02 10:38
字数 373
阅读 30
收藏 0

一、定义:jfinal中freemarker模版的分页指令定义如下

<#macro paginate pageNumber totalPage url param>
<#assign showPages = 10/>
<ul class="pagination teacms-pagination">
    <#if pageNumber!=1>
        <li><a href="${url}?p=${pageNumber - 1}&${param}">«</a></li>
    </#if>
    <#if pageNumber-showPages/2 gt 0>
        <#assign start = pageNumber-(showPages-1)/2/>
        <#if showPages gt totalPage>
            <#assign start = 1/>
        </#if>
    <#else>
        <#assign start = 1/>
    </#if>
    <#if totalPage gt showPages>
        <#assign end = (start+showPages-1)/>
        <#if end gt totalPage>
            <#assign start = totalPage-showPages+1/>
            <#assign end = totalPage/>
        </#if>
    <#else>
        <#assign end = totalPage/>
    </#if>
    <#assign pages=start..end/>
    <#list pages as page>
        <li <#if pageNumber == page>class="active"</#if>><a  href="${url}?p=${page}&${param}">${page}</a></li>
    </#list>
    <#if pageNumber!=totalPage>
        <li><a href="${url}?p=${pageNumber + 1}&${param}">»</a></li>
    </#if>
</ul>
</#macro>

参数说明:

  1. pageNumber 当前页;
  2. totalPage 总页数;
  3. url 当前页面的URL地址; 4.param 当前页面请求参数;

二、使用

在其他要使用的模版文件中,先用导入指令把分页指令引入,然后直接调用。使用方式有两种,分别如下:

方式一、使用include的方式:

1、引入文件
<#include "/_themes/Default/lib/paginate.ftl">
2、使用分页
<@paginate pageNumber=articlePage.pageNumber totalPage=articlePage.totalPage url=ctx param="searchKeyWord=${searchKeyWord!}"/>

方式二、使用import的方式:

1、引入文件
<#import "/_themes/Default/lib/paginate.ftl" as paginate>
2、使用分页
<@paginate.paginate pageNumber=articlePage.pageNumber totalPage=articlePage.totalPage url=ctx param="searchKeyWord=${searchKeyWord!}"/>

三、效果图

输入图片说明

其实这个分页模版指令并不仅仅适用于jfinal中,理论上与服务端使用的框架没有任何关系,仅仅是实例中使用的服务器分页对象为jfinal提供的Page类,不同的分页支持类在调用的时候不一样而已。

© 著作权归作者所有

共有 人打赏支持
SPPan
粉丝 10
博文 29
码字总数 15103
作品 0
成都
程序员
私信 提问
使用Freesql简单地实现多条件查询

在实际应用中我们经常会遇到多条件查询的情景,以往的解决方案是在java中对各个参数值进行非空之类的判断,再进行sql及参数的拼凑。 其实还有更简单的解决方法的--用Freemarker。Freemarker可...

jse7en
2014/03/23
0
4
Jfinal中FreemarkerRender小改进

在与朋友讨论中,说到jf中的FreemarkerRender不能读到jar中的文件,查看jf源码是没有加入Freemarker的ClassTemplateLoder.读不到jar包中的静态文件,尝试着自己改进了下这个render。 把jfina...

kyle1970
2013/01/03
0
5
JFinal 源码导读第四天(3) initRender

1.接上面的文章,initRender(); private void initRender() {RenderFactory renderFactory = RenderFactory.me();renderFactory.init(constants, servletContext);} 2.renderFactory.init(con......

skyim
2013/06/18
0
0
JFinal使用Freemarker作为展示层中的国际化配置使用

最近在使用jfinal,如果使用jsp作为展现层的文件,使用jfinal的国际化很简单,直接 I18N.getText("key")就可以了,如果使用freemarker就没这么简单了,不能所有的国际化文字都通过 Controll...

hulang
2014/04/27
0
0
JAVA 极速WEB+ORM框架 - JFinal

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、p...

JFinal
2012/03/18
0
496

没有更多内容

加载失败,请刷新页面

加载更多

Spring核心概念--Spring01

小生初出程序茅庐,走上编程之路,还请各位大佬多多管照。 初学Spring框架: 创建HelloWorldSpring项目 用eclipse开发Web项目,添加jar包: commons-logging-1.2.jar log4j-1.2.17.jar spring-...

小橙子的曼曼
19分钟前
1
0
MySQL 运行状态监控方法

一、通过shell脚本监控mysql的qps,tps,io详细见附件脚本《mysqlgather.sh》 因在脚本中直接设置密码会提示告警信息,需要在my.cnf文件中的[client]标签下增加默认的用户名和密码,并重启mys...

PeakFang-BOK
23分钟前
2
0
ROS实操笔记 四 topic (主题)

主题 消息以一种发布/订阅的方式传递。一个节点可以在一个给定的主题中发布消息。一个节点针对某个主题关注与订阅特定类型的数据。可能同时有多个节点发布或者订阅同一个主题的消息。总体上,...

placido
24分钟前
1
0
【NLP】【六】gensim之doc2vec

【一】总述 doc2vec是指将句子、段落或者文章使用向量来表示,这样可以方便的计算句子、文章、段落的相似度。 【二】使用方法介绍 1. 预料准备 def read_corpus(fname, tokens_only=False):...

muqiusangyang
27分钟前
0
0
node中process.nextTick & promise & 异步IO & setTimeout & setImmediate 的优先级

process.nextTick > promise > setTimeout > 异步IO > setImmediate

小草先森
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部