文档章节

Beetl模板引擎自定义分页标签

风中的眼睛
 风中的眼睛
发布于 2017/04/25 10:47
字数 305
阅读 249
收藏 0

1)在beetl.properties文件中配置tag

TAG.page = xx.xx.xx.xx.PageTag

2)在模板中引用标签

<div id="page">
    <#page  val="${pageMap}" />
</div>

3)增加标签类继承自GeneralVarTagBinding类

import org.beetl.core.Context;
import org.beetl.core.GeneralVarTagBinding;
import org.beetl.core.statement.Statement;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public class PageTag extends GeneralVarTagBinding {

    private int pageCount;
    private int current;

    @Override
    public void init(Context ctx, Object[] args, Statement st) {
        super.init(ctx, args, st);
        Map<String, Integer> pageMap = new HashMap<>();
        Map<String, Integer> val = null;
        try {
            val = (Map<String, Integer>) getAttributeValue("val");
        } catch (Exception e) {
        }
        if (val != null) {
            pageMap.putAll(val);
        }
        if (pageMap.get("pageCount") != null) {
            pageCount = pageMap.get("pageCount");
        }
        if (pageMap.get("current") != null) {
            current = pageMap.get("current");
        }
        if (current < 1) current = 1;
    }

    @Override
    public void render() {
        StringBuilder obj = new StringBuilder();
        //上一页
        if (current > 1) {
            obj.append("<a href=\"javascript:;\" class=\"prevPage\">上一页</a>");
        } else {
            obj.append("<a class=\"disabled\">上一页</a>");
        }
        //中间页码
        if (current != 1 && current >= 4 && pageCount != 4) {
            obj.append("<a href=\"javascript:;\" class=\"tcdNumber\">" + 1 + "</a>");
        }
        if (current - 2 > 2 && current <= pageCount && pageCount > 5) {
            obj.append("<span>...</span>");
        }
        int start = current - 2, end = current + 2;
        if ((start > 1 && current < 4) || current == 1) {
            end++;
        }
        if (current > pageCount - 4 && current >= pageCount) {
            start--;
        }
        for (; start <= end; start++) {
            if (start <= pageCount && start >= 1) {
                if (start != current) {
                    obj.append("<a href=\"javascript:;\" class=\"tcdNumber\">" + start + "</a>");
                } else {
                    obj.append("<a class=\"current active\">" + start + "</a>");
                }
            }
        }
        if (current + 2 < pageCount - 1 && current >= 1 && pageCount > 5) {
            obj.append("<span>...</span>");
        }
        if (current != pageCount && current < pageCount - 2 && pageCount != 4) {
            obj.append("<a href=\"javascript:;\" class=\"tcdNumber\">" + pageCount + "</a>");
        }
        //下一页
        if (current < pageCount) {
            obj.append("<a href=\"javascript:;\" class=\"nextPage\">下一页</a>");
        } else {
            obj.append("<a class=\"disabled\">下一页</a>");
        }
        try{
            ctx.byteWriter.writeString(obj.toString());
            this.doBodyRender();
        }catch (IOException e){
        }
    }
}

 

© 著作权归作者所有

风中的眼睛

风中的眼睛

粉丝 1
博文 6
码字总数 1136
作品 0
朝阳
后端工程师
私信 提问
Beetl 2.7.5 发布,Java 模板引擎

Beetl 2.7.5 发布了,改进内容包括: # 288 for循环 变量定义错误的提示信息完善 # 287 自定义HTML标签获取标签属性报错修复 Beetl是新一代的模板引擎。总得来说,它的特性如下: 功能完备:...

闲大赋
2016/12/29
1K
7
07.HTML标签以及自定义定界符配置---《Beetl视频课程》

本期视频实现了评论列表分页; 内容简介:使用了HTML完成分页抽取,并且介绍了自定义定界符 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK --...

Gavin-King
2018/12/12
173
0
06.Beetl标签函数include ---《Beetl视频课程》

本期视频实现了评论列表分页; 内容简介:使用了标签函数include完成分页抽取 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK ------------ 标签...

Gavin-King
2018/12/11
245
0
Beetl 2.2.0 发布,Java 模板引擎

因为引入了新语法ajax标记,所以版本跳到2.2.0. 新增功能: #126:html标签指示符号允许多个字母,如默认的#,<#table>认为是html标签,如果改为"ct:",则被认为是html标签. #124: html 标签 绑定...

闲大赋
2015/03/05
1K
15
Beetl 2.9.0 发布,修改 HTML 标签的渲染机制

本次发布主要修改了HTML 标签的渲染机制,HTMLTagSupportWrapper2 采用延迟渲染 # 368 tagBody 改为按照需要渲染 #367 俩处错误提示不明显的地方 在2.9.0版本,HTML 标签内部渲染是使用tagBo...

闲大赋
2018/09/09
715
2

没有更多内容

加载失败,请刷新页面

加载更多

JavaScript权威指南笔记5

第五章、语句 0、概述 JS程序是一系列可执行语句的集合。 通过控制语句来改变语句的默认执行顺序。 控制语句:条件、循环和跳转(如return、break和throw) 2、复合语句 当多条语句被当做一条语...

_Somuns
10分钟前
3
0
vmware安装ubuntu18.04总是 panic -not syncing:corrupted stack end detected inside schedule

Vmware 安装ubuntu 总是卡着不动, 提示panic -not synciong 网上提示很多办法,都试了效果不佳, 找到了完美解决办法 你的兼容模式重新选一下为6.0,兼容性对硬件有要求的 即可实现 成功安装...

dragon_tech
18分钟前
3
0
centos7 安装 mysql5.7 版本(全)

centos 安装 版本说明 :centos7,mysql5.7 ,不是 centos7 可能有些命令不兼容 安装 mysql-server # 下载并安装 mysql yum wget -i -c http://dev.mysql.com/get/mysql57-community-relea......

sanri1993
47分钟前
4
0
Spring3.x升级到Spring4.x-5.x时关于MappingJacksonHttpMessageConverter的报错问题

在Spring4.x或者以上的版本强使用(不然会报错): org.springframework.http.converter.json.MappingJackson2HttpMessageConverter 如果是Spring4.0获者以下的版本可以使用MappingJacksonH...

code-ortaerc
50分钟前
4
0
OSG 渲染状态污染到其它节点怎么解决?

在根节点补上初始状态

洛克人杰洛
51分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部