- 浏览: 84656 次
- 性别:
- 来自: 广州
文章分类
最新评论
1.WEB-INF/tlds/pager.tld
<?xml version="1.0" encoding="UTF-8"?> <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> <tlib-version>0.9</tlib-version> <!--标签头--> <short-name>w</short-name> <!--将来在页面用taglib引用时的uri属性,这部分的名字可以随便写,只要是符合HTTP网址形式的 --> <uri>http://javacrazyer.javaeye.com/tags/pager</uri> <!-- 自定义标签的描述信息 --> <tag> <!-- 标签名 --> <name>pager</name> <!-- 对应的标签处理类全限定名 --> <tag-class>com.kington.ibank.util.PagerTag</tag-class> <!-- 标签主体的类型 --> <body-content>empty</body-content> <!-- 当前页号属性的描述信息 --> <attribute> <!-- 属性名 --> <name>pageNo</name> <!-- 该属性是否为必要的 --> <required>true</required> <!-- 属性值是否可以在JSP运行时期动态产生 --> <rtexprvalue>true</rtexprvalue> <!-- 属性的数据类型 --> <type>int</type> </attribute> <!-- 总记录数属性的描述信息 --> <attribute> <name>recordCount</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>int</type> </attribute> <!-- 总页数属性的描述信息 --> <attribute> <name>pageSize</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>int</type> </attribute> <!-- 分页标签要跳转的URI属性的描述信息 --> <attribute> <name>url</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> </tag> </taglib>
2.WEB-INF/web.xml
<filter> <filter-name>securityFilter</filter-name> <filter-class>com.kington.ibank.webapp.security.SecurityFilter</filter-class> </filter> <jsp-config> <taglib> <!-- 配置标签的引用地址 JSP页面中引用时使用--> <taglib-uri>/eltag</taglib-uri> <!-- 配置标签的TLD文件地址 --> <taglib-location>/WEB-INF/tlds/ElTag.tld</taglib-location> </taglib> <taglib> <!-- 配置标签的引用地址 JSP页面中引用时使用--> <taglib-uri>/taglib</taglib-uri> <!-- 配置标签的TLD文件地址 --> <taglib-location>/WEB-INF/tlds/TagLib.tld</taglib-location> </taglib> <taglib> <!-- 配置标签的引用地址 JSP页面中引用时使用--> <taglib-uri>/mypage</taglib-uri> <!-- 配置标签的TLD文件地址 --> <taglib-location>/WEB-INF/tlds/pager.tld</taglib-location> </taglib> <taglib> <taglib-uri>/ss3/urlIntercept</taglib-uri> <taglib-location>/WEB-INF/tlds/security.tld</taglib-location> </taglib> </jsp-config> <listener> <listener-class>com.kington.ibank.util.SchedulerInit</listener-class> </listener>
3.PageTag.java
package com.kington.ibank.util; import java.io.IOException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport; import org.apache.struts2.ServletActionContext; /** * 分页标签处理类 */ public class PagerTag extends TagSupport { private static final long serialVersionUID = 5729832874890369508L; private String url; //请求URI private int pageSize = 20; //每页要显示的记录数 private int pageNo = 1; //当前页号 private int recordCount; //总记录数 @SuppressWarnings("unchecked") public int doStartTag() throws JspException { HttpServletRequest request= ServletActionContext.getRequest(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort(); int pageCount = (recordCount + pageSize - 1) / pageSize; //计算总页数 //拼写要输出到页面的HTML文本 StringBuilder sb = new StringBuilder(); if(recordCount == 0){ sb.append("<strong>没有可显示的项目</strong>\r\n"); }else{ //页号越界处理 if(pageNo > pageCount){ pageNo = pageCount; } if(pageNo < 1){ pageNo = 1; } sb.append("<form method=\"post\" action=\"").append(basePath+((HttpServletRequest) request).getContextPath()+this.url) .append("\" name=\"qPagerForm\">\r\n"); //获取请求中的所有参数 Enumeration<String> enumeration = request.getParameterNames(); String name = null; //参数名 String value = null; //参数值 //把请求中的所有参数当作隐藏表单域 while (enumeration.hasMoreElements()) { name = enumeration.nextElement(); value = request.getParameter(name); // 去除页号 if (name.equals("pageNo")) { if (null != value && !"".equals(value)) { pageNo = Integer.parseInt(value); } continue; } sb.append("<input type=\"hidden\" name=\"") .append(name) .append("\" value=\"") .append(value) .append("\"/>\r\n"); } // 把当前页号设置成请求参数 sb.append("<input type=\"hidden\" name=\"").append("pageNo") .append("\" value=\"").append(pageNo).append("\"/>\r\n"); // 输出统计数据 /** sb.append(" 共<strong>").append(recordCount) .append("</strong>项") .append(",<strong>") .append(pageCount) .append("</strong>页: \r\n");**/ sb.append("<ul>"); //上一页处理 if (pageNo == 1) { sb.append("<li><span class=\"disabled\">上一页") .append("</span></li>\r\n"); } else { sb.append("<li><a href=\"javascript:turnOverPage(") .append((pageNo - 1)) .append(")\">上一页</a></li>\r\n"); } //如果前面页数过多,显示"..." int start = 1; if(this.pageNo > 4){ start = this.pageNo - 1; sb.append("<li><a href=\"javascript:turnOverPage(1)\">1</a></li>\r\n"); sb.append("<li><a href=\"javascript:turnOverPage(2)\">2</a></li>\r\n"); sb.append("<li><a>…</a></li>\r\n"); } //显示当前页附近的页 int end = this.pageNo + 1; if(end > pageCount){ end = pageCount; } for(int i = start; i <= end; i++){ if(pageNo == i){ //当前页号不需要超链接 sb.append("<li><span class=\"current\">") .append(i) .append("</span></li>\r\n"); }else{ sb.append("<li><a href=\"javascript:turnOverPage(") .append(i) .append(")\">") .append(i) .append("</a></li>\r\n"); } } //如果后面页数过多,显示"..." if(end < pageCount - 2){ sb.append("<li><a>…</a></li>\r\n"); } if(end < pageCount - 1){ sb.append("<li><a href=\"javascript:turnOverPage(") .append(pageCount - 1) .append(")\">") .append(pageCount - 1) .append("</a></li>\r\n"); } if(end < pageCount){ sb.append("<li><a href=\"javascript:turnOverPage(") .append(pageCount) .append(")\">") .append(pageCount) .append("</a></li>\r\n"); } //下一页处理 if (pageNo == pageCount) { sb.append("<li><span class=\"disabled\">下一页") .append("</span></li>\r\n"); } else { sb.append("<li><a href=\"javascript:turnOverPage(") .append((pageNo + 1)) .append(")\">下一页</a></li>\r\n"); } // 生成提交表单的JS sb.append("<script language=\"javascript\">\r\n"); sb.append(" function turnOverPage(no){\r\n"); sb.append(" if(no>").append(pageCount).append("){"); sb.append(" no=").append(pageCount).append(";}\r\n"); sb.append(" if(no<1){no=1;}\r\n"); sb.append(" document.qPagerForm.pageNo.value=no;\r\n"); sb.append(" document.qPagerForm.submit();\r\n"); sb.append(" }\r\n"); sb.append("</script>\r\n"); sb.append("</ul>"); sb.append("</form>\r\n"); } //把生成的HTML输出到响应中 try { pageContext.getOut().println(sb.toString()); } catch (IOException e) { throw new JspException(e); } return SKIP_BODY; //本标签主体为空,所以直接跳过主体 } public void setUrl(String url) { this.url = url; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public void setPageNo(int pageNo) { this.pageNo = pageNo; } public void setRecordCount(int recordCount) { this.recordCount = recordCount; } }
4.使用这个标签
<c:if test="${not empty pageModel.list}"> <div class="pagination pagination-small pagination-centered"> <c:if test="${reading == 0 }"> <w:pager pageSize="${pageModel.recordPage}" pageNo="${pageModel.curPage}" url="/banks/member/member/messages.jhtml" recordCount="${pageModel.fullListSize}"/> </c:if> <c:if test="${reading == 1 }"> <w:pager pageSize="${pageModel.recordPage}" pageNo="${pageModel.curPage}" url="/banks/member/member/messageUnread.jhtml" recordCount="${pageModel.fullListSize}"/> </c:if> </div> </c:if>
5.输出结果:
<div class="pagination pagination-small pagination-centered"> <form method="post" action="http://localhost:8080/ibank/banks/member/member/messageUnread.jhtml" name="qPagerForm"> <input type="hidden" name="reading" value="1"/> <input type="hidden" name="messagesTotalCount" value="56"/> <input type="hidden" name="pageNo" value="1"/> <ul><li><span class="disabled">上一页</span></li> <li><span class="current">1</span></li> <li><a href="javascript:turnOverPage(2)">2</a></li> <li><a>…</a></li> <li><a href="javascript:turnOverPage(9)">9</a></li> <li><a href="javascript:turnOverPage(10)">10</a></li> <li><a href="javascript:turnOverPage(2)">下一页</a></li> <script language="javascript"> function turnOverPage(no){ if(no>10){ no=10;} if(no<1){no=1;} document.qPagerForm.pageNo.value=no; document.qPagerForm.submit(); } </script> </ul> </form> </div>
发表评论
-
记录一下我的p2p的UDP打洞过程【云服务器公网版本】
2014-07-19 21:14 2156服务端连接了成功处理了两个客户端的登录并且成功打洞后的log记 ... -
记录一下我的p2p的UDP打洞过程【localhost局域网版本】
2014-07-19 21:08 2047MainServer在两个客户端都启动成功之后并且打洞成功之后 ... -
有hadoop_zookeeper的pom.xml
2014-06-03 23:39 863FROM:http://blog.csdn.net/zph2 ... -
省市县三级联动数据库
2014-06-03 09:42 3219/* *@名称: myaddress.js ... -
Java中的注解机制--比较详细
2014-05-31 17:33 591http://blog.csdn.net/a243932069 ... -
记录一下这次mvn 淘宝的开源MVC框架 Webx的过程
2014-05-24 21:44 851[INFO] ------------------ ... -
恶心的Enum类型
2014-05-24 09:59 698public enum InvoiceType { ... -
自定义标签taglib
2014-05-09 17:00 751JSP 最佳实践: taglib简介 ... -
MyEclipse has detected that less than 5% of the 31MB of Eden Space (Heap memory)
2014-04-27 12:48 1082解决办法: D:\>cd D:\Users\Admin ... -
数据库映射只@OneToMany的两个区别
2014-03-31 21:07 812========================== (不加 ... -
接着报错,连接问题Cannot open a connection
2014-03-28 18:39 1402HTTP Status 500 - ------- ... -
让spring启动时应用不需要加载数据库【default-lazy-init="true"】
2014-03-28 14:33 5359spring启动时应用不需要加载数据库,需要时在加载,如何实现 ... -
异常的Tomcat输出信息-修正log4j配置文件之后仍然异常
2014-03-28 11:51 10892014-3-28 11:46:50 org.apache ... -
异常的Tomcat输出信息
2014-03-28 11:27 697正常情况下是没有换行的。现在异常的情况是有换行的。 20 ... -
正常的Tomcat输出信息
2014-03-28 11:26 10052014-3-28 11:23:07 org.apache ... -
烦人的后台首页index.jsp弄好了
2014-03-25 14:39 46071.<title>微信公众平台后台管理< ... -
MAVEN官网地址
2014-03-25 10:12 724http://mvnrepository.com/artifa ... -
正则表达式
2014-03-25 10:11 553[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+ ... -
Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
2014-03-24 16:03 1061Window 通过cmd查看端口占用、相应进程、杀死进程等的命 ... -
java synchronized详解
2014-03-16 11:30 472Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候 ...
相关推荐
在Struts2框架中,`<sx:>`标签是Struts2 XWork库的一部分,用于增强JSP页面的功能,提供更强大的数据绑定和表单处理能力。本篇将重点讲解如何利用`sx:`标签实现组合查询和带分页功能。 首先,让我们了解下Struts2的...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而`<authorization-module>`看起来是一个自定义的JSP标签库,专门设计用于处理权限管理和分页功能。这种标签库使得开发者能够更方便地在...
`<pager:page>`是分页标签库中的主要标签,用于渲染分页链接。 二、使用步骤 1. 引入依赖:首先,在项目的`WEB-INF/lib`目录下添加`pager-taglib.jar`,或者如果你使用的是Maven或Gradle,需要在对应的构建文件中...
`pager-taglib`是一个开源的JSP标签库,提供了一系列易于使用的分页标签,如`<pager:page>`、`<pager:previous>`、`<pager:next>`等,开发者只需在JSP页面中引入这些标签,就可以快速构建出具有分页功能的列表页面。...
在使用`pager-taglib`时,你需要在JSP页面中引入标签库,这通常通过`<%@ taglib %>`指令完成,然后在页面中使用上述标签来构建分页结构。例如: ```jsp <%@ taglib prefix="pager" uri="pager-taglib-2.0.tld" %> ....
<td valign="bottom"><font face="arial,sans-serif" size="-1">Result Page:</font></td> <pg:prev null="true"> <% if (pageUrl != null) { %> <td align="right"> <a href="<%=pageUrl %>"> <img src=...
它们通常由一个或多个标签库(Tag Library)提供,这些库包含了一系列与分页相关的标签,如`<paging:start>`, `<paging:end>`, `<paging:current>`, `<paging:prev>`, 和 `<paging:next>`等。 2. **使用方法**:...
2. **使用分页标签**:`pager-taglib`提供了一些关键的标签,如`< pager:table >`、`< pager:page >`和`< pager:nav >`等。`< pager:table >`用于包裹整个表格,`< pager:page >`定义每一页的内容,`< pager:nav >`...
`<s:pager>`标签内部的`<s:a>`标签用于创建导航链接,允许用户跳转到不同的页码。 此外,Pager-taglib还提供了许多高级特性,如自定义样式、分页样式、链接生成逻辑等,可以根据项目需求进行定制。 总结来说,这个...
在JSP页面中,你可以使用`<pager:tag>`标签来显示分页链接,如`<pager:page>`用于显示当前页,`<pager:first>`和`<pager:last>`用于显示首页和尾页的链接,`<pager:prev>`和`<pager:next>`则表示上一页和下一页。...
在JSP页面中,你可以这样使用上述标签来实现分页: ```jsp <pager:pageInfo totalCount="${totalCount}" currentPage="${currentPage}" /> <pager:links totalCount="${totalCount}" currentPage="${currentPage}" /...
3. **编写JSP页面**:在JSP页面中使用`<pager:xxx>`标签进行分页展示。通常包括`<pager:pageInfo>`用于显示页码和`<pager:list>`用于展示每页的数据。 4. **后台处理**:在Servlet或Controller中,需要计算总记录数...
Pager-taglib提供了两个主要的标签:`<pg:pager>`和`<pg:pageInfo>`。`<pg:pager>`用于生成分页链接,`<pg:pageInfo>`用于显示当前页和总页数等信息。 - `<pg:pager>`标签的基本结构如下: ```jsp <pg:pager ...
首先,`pager-taglib`提供了几个预定义的标签,如`<pg:pager>`、`<pg:firstPage>`、`<pg:lastPage>`、`<pg:previousPage>`和`<pg:nextPage>`等,这些标签可以帮助开发者快速创建分页链接。`<pg:pager>`是核心标签,...
- `<pg:pager>` 标签用于生成分页链接,它可以与数据遍历结合,生成相应的分页导航。基本用法如下: ```jsp <pg:pager action="list.action" /> ``` `action` 属性指定了分页请求的 URL,当用户点击分页链接时,会...
在这个例子中,`<pager:page>`标签用于包围整个分页结构,而`<pager:first>`、`<pager:last>`、`<pager:prev>`和`<pager:next>`则分别用于生成“首页”、“末页”、“上一页”和“下一页”的链接。 需要注意的是,...
<td valign=bottom><font face=arial,sans-serif size=-1>Result Page:</font></td> <pg:prev ifnull="true"> <% if (pageUrl != null) { %> <td align=right><a href="<%=pageUrl%>"><img src=...
1. `<pager:page>`:这是核心标签,用于显示分页链接。它接受一系列参数,如当前页码、总页数、每页记录数等,自动生成对应的HTML代码。 2. `<pager:previous>`和`<pager:next>`:这两个标签分别用于生成上一页和...
4. **在JSP中使用标签**:在JSP页面上,使用`<pager:xxx>`标签进行分页渲染。标签通常包括初始化、显示页码、处理点击事件等功能。 5. **渲染分页**:`pager-tablib`会根据配置生成相应的HTML代码,显示分页链接和...
Pager Taglib提供了一些主要的标签,如`<pager:page>`,`<pager:prev>`,`<pager:next>`等,它们可以帮助你轻松创建分页链接。下面是一个基本的使用示例: ```jsp <pager:page total="100" current="5" url="/...