displaytag 分页-添加页码输入框跳转至指定页

环境前提:工程引用displaytag-1.2.jar 使用displaytag自动生成的分页

修改分页步骤

1.修改配置文件displaytag.properties

原配置文件:displaytag-1.2.jar --> org.displaytag.properties --> displaytag.properties

新建配置文件displaytag.properties放在/WEB-INF/classes目录下,新配置文件中相同key的值将会覆盖原配置文件中的值

在新配置文件中修改原配置文件中paging.banner.full paging.banner.first paging.banner.last的值

paging.banner.full paging.banner.first添加(输入框和跳转)代码:

\u7b2c<input id="gotoPageNumber_displaytag">\u9875 <a onclick="gotoPage_displaytag(0)">GO</a><input type="hidden" id="lastPageUrl_displaytag" value="{4}"/>

paging.banner.last添加(输入框和跳转)代码:

\u7b2c<input id="gotoPageNumber_displaytag">\u9875 <a onclick="gotoPage_displaytag(1)">GO</a><input type="hidden" id="prevPageUrl_displaytag" value="{2}"/>

备注:

displaytag.properties中汉字存储的是Unicode码 \u7b2c为第 \u9875为页

{4}最后解析为尾页a标签的href值,即跳转到尾页的链接

{2}最后解析为上一页a标签的href值,即跳转到上一页的链接

paging.banner.full paging.banner.first用尾页的链接,目的是获取总页数

paging.banner.last用上一页的链接,是因为尾页此时没有链接,通过上一页获取总页数(上一页的页数+1即为总页数)

修改完成配置文件后需要重新启动服务

如果只有一个jsp页面需要修改为有跳转功能的分页可以直接在jsp页面修改配置文件的值

<display:setProperty name="paging.banner.full" value=‘<span class="pagelinks">...添加代码在此处,和上一样...</span>‘ />

<display:setProperty name="paging.banner.first" value=‘<span class="pagelinks">...添加代码在此处,和上一样...</span>‘ />

<display:setProperty name="paging.banner.last" value=‘<span class="pagelinks">...添加代码在此处,和上一样...</span>‘ />

2.添加跳转事件(gotoPage_displaytag())

可以单独新建js文件在jsp页面进行引用 也可以直接将js方法添加到jsp页面已经引用的共通js文件中

function gotoPage_displaytag(pageFlag) {

    // 跳转到第多少页只能输入正整数 正整数正则表达式
    var T = /^[1-9]\d*$/;

    // 获取输入的值 用JS方法获取 以防页面没有引用JQUERY
    var pageNum = document.getElementById("gotoPageNumber_displaytag").value;

    // 对输入的页数进行校验 如果输入的页数不是正整数 什么也不做
    if (!T.test(pageNum)) {
        return;
    }

    // 获取页面跳转URL pageFlag=0时获取的是尾页的URL pageFlag=1时获取的是上一页的URL
    var url = null;
    if (pageFlag == 0) {
        // paging.banner.full
        // paging.banner.first
        // 获取的是尾页的URL
        url = document.getElementById("lastPageUrl_displaytag").value;
    } else {
        // pageFlag == 1
        // paging.banner.last
        // 获取的是上一页的URL
        url = document.getElementById("prevPageUrl_displaytag").value;
    }

    // 获取总页数
    // d-16544-p是displaytag-1.2.jar通过row生成记录页码的key
    // java代码中通过new ParamEncoder("row").encodeParameterName(TableTagParameters.PARAMETER_PAGE)获取该key
    // 进一步通过request.getParameter(key)获取指定跳转到的页数
    var urlArray = url.split("d-16544-p=");
    var urlLastPart = urlArray[1];
    // url中用&分开各个参数传值
    var index = urlLastPart.indexOf("&");
    var totalPageNum = null;
    if (index < 0) {
        // d-16544-p是最后一个参数 urlLastPart即为页数
        totalPageNum = urlLastPart;
        // 删除第二部分参数字符串中页数的值 下将设置为即将跳转的页数
        urlLastPart = "";
    } else {
        // d-16544-p不最后一个参数 从urlLastPart中获取页数
        totalPageNum = urlLastPart.substr(0, index);
        // 删除第二部分参数字符串中页数的值 下将设置为即将跳转的页数
        urlLastPart = urlLastPart.substr(index);
    }
    if (pageFlag == 1) {
        // 总页数 = 上一页页数 + 1
        totalPageNum = parseInt(totalPageNum) + 1;
    }

    // 判断输入页数是否超过总页数 如果没有超过总页数替换页数为输入页 超过总页数按最大页查询
    // 设置新的url
    // 第一部分参数
    url = urlArray[0] + ‘d-16544-p=‘;
    // 跳转的页数
    if (parseInt(pageNum) < parseInt(totalPageNum)) {
        url += pageNum;
    } else {
        url += totalPageNum;
    }
    // 第二部分参数
    url += urlLastPart;

    // 跳转到指定页数
    window.location = url;
}

displaytag官方网站(http://displaytag.sourceforge.net)

时间: 2024-07-31 17:56:54

displaytag 分页-添加页码输入框跳转至指定页的相关文章

datatables增加跳转至指定页功能

var mytable = $('#datatables'); mytable.dataTable( { "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>", "sPaginationType": "bootstrap", "bProcess

yii2分页跳转到指定页

先上图看效果,样式虽然有点丑,这都不重要,我相信拿到代码的你们更注重的是这功能怎么实现的! 从上图中不难看出,我们制定跳转到某页的功能是基于linkpager之上的扩展,这根我们之前实现的分页扩展明显不同,之前的明显就是重写了!当然,这都不重要,我们看看GoLinkPager的具体实现!名字起的有点lower,不重要! 1.在frontend\components目录新建GoLinkPager类文件 2.该类继承yii\widgets\LinkPager;,如下: namespace front

论文页码如何跳过前面两页开始编码?

如何从正文开始编页码 1.行这个操作时,我查了很多的资料,主要并不是因为无法弄前面的两页不要有页码. 2.在弄得过程中,出现了一个空白页,这个空白页怎么都删不掉. 后来,原来可以让这个分节符显示出来,从而删除它,或是用delete ,而不是backspace. 附上当时使用的链接:word2010如何从第三页开始编码 并且,应记得格式刷的快捷键为:ctrl+shift+c ctrl+shift+v 真的很好用. 3.还有就是,如果可以尽量在软件 上操作文档,因为像我就因为即使用了wps,也使用了

从手机浏览器或者 APP 中跳转到微信并跳转到指定页原理及行业内幕详解

相信很多朋友遇到过有些网站,可以直接通过一个连接就能让你的手机打开微信且跳转到某个指定的页面,许多程序员很好奇到底是怎么实现的,到处求这种方法的源码,在文本中我会介绍及剖析这种跳转实现的原理. 微信是个比较封闭的环境,至于为什么封闭,相信大家都了解,在一些应用场景中,我们要用到外部浏览器跳转到微信内部打开,比如添加好友.微信支付等,在微信内部环境直接长按二维码就能实现,确实方便很多. 言归正传,所有可以唤起微信的地址最终都会被转化为:“ weixin://...ticket=...”这种格式,其

yii2分页扩展之实现跳转到具体某页

先上图看效果,样式虽然有点丑,这都不重要,我相信拿到代码的你们更注重的是这功能怎么实现的! 从上图中不难看出,我们制定跳转到某页的功能是基于linkpager之上的扩展,这根我们之前实现的分页扩展明显不同,之前的明显就是重写了!当然,这都不重要,我们看看GoLinkPager的具体实现!名字起的有点lower,不重要! 1.在frontend\components目录新建GoLinkPager类文件 2.该类继承yii\widgets\LinkPager;,如下: namespace front

报表pdf的合并、添加页码

某一项目,用ReportMachine做报表模板,然后写了一个DLL以JNI方式供Java调用.在处理时,需要将多个报表一次性打印输出.因为多个报表是以不同的报表模板生成的,所以转成各个pdf之后,需要将这多个pdf文件合并为一个.并且,这个文件,还得附加页码,因为原来做这样的报表,是用页码标签机手工盖印后归档,这样麻烦,希望用电脑输出时自动生成页码.今天终于把这个问题彻底解决了. 一.pdf文件的合并,使用pdftk工具,可以通过命令行,将多个合并为一个. 1.将横向排列的报表,旋转变成纵向.

在 Word 中添加页码

在 Word 中添加页码 重要:  本文是由机器翻译的,请参阅免责声明.请在 此处 中查找本文的英文版本以便参考. 添加到 Word 文档编号通过使用页码按钮,在插入选项卡上的空白页. 更多高级页面编号的帮助,如使用的文档的分为部分,使用的字段将页码添加到页眉和起始页码编号以后在文档中,请参阅下面的相关的链接. 注意: 如果您正在使用浏览器以在 Word 联机编辑文档,请参阅Word Online 中的添加页码的下面. 选择"插入">"页码". 选择位置,例如

WORD2007不能添加页码的解决方法

1.打开Word 2007 2.单击Microsoft Office按钮 (左上角的圆圈) 3.单击"Word 选项"(在页面的右下方) 4.单击"加载"项(页面左边一排,倒数第三个,出现的页面中,向最下面那排看,找到"管理") 5.在"管理"的下拉列表中,选择"模板",然后单击"转到" 6.按添加从以下位置添加模板Building Blocks.dotx C:\Program File

给PDF文件添加页码的方法

今天小编给大家带来的是给PDF文件添加页码的方法.在我们工作中,每天都要处理大量不同格式的文件,PDF文件就是其中的一种.当我们在查阅PDF文件的时候,为了方便查阅,给PDF文件添加页码是个不错的主意.好了,话不多说,开始我们今天的学习吧. 操作软件:迅捷PDF编辑器 工具下载地址:https://www.xunjiepdf.com/editor 1.想要给PDF文件添加页码,首先我们需要有一个能够编辑PDF文件的工具来使用.这里小编使用的是迅捷PDF编辑器. 2.当我们用工具将PDF文档打开后