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)
- man 帮助
- 解决国内网络Python2.X 3.X PIP安装模块连接超时的问题
- 文件内存映射(mmap)
- cache 访问频率的思考
- python导入matplotlib模块出错
- 乱码电路(Garbled circuits)
- 8. String to Integer (atoi)
- 5. ESXi集群配置一例(HP C7000+DELL EQlogic+HUAWEI 6700)
- 更好地学习dubbo源代码
- Bootrap学习笔记——不定期更新
- XZ_iOS之使用webView实现开机动画效果
- httpd.conf文件配置详解
- Canvas 在高清屏下绘制图片变模糊的解决方法
- git merge和git rebase的区别
- OpenGL学习笔记(一)
- linux系统编程手册 I/O复用
- nginx的配置、虚拟主机、负载均衡和反向代理
- 【BZOJ1968】[Ahoi2005]COMMON 约数研究【数论】
- 1j2ee即web项目,严格意义上来说,没有jsp代码,只有class文件、html文件、javascript文件。2 基于extjs框架的项目怎么怎么查看在浏览器中展示的最终html页面的代码 3
- Elasticsearch与Solr