pager-taglib分页的使用
来源:互联网 发布:java 监听文件夹变化 编辑:程序博客网 时间:2024/05/19 09:02
pager-taglib分页的使用
首先上其页面中下载
http://jsptags.com/tags/navigation/pager/download.jsp
这里也有提供一些效果和例子.
这里讲下一般常用的效果:
首先分页我们需要的是所查询数据的总的数据数量total.和每个数据集合.数据集合用于数据显示.total用于分页跳转到算法.这里我们可以看下pager-taglib的标签需要的参数:
- <pg:pager url="访问页面的url地址" items="${pm.total }(总数据数量)" export="currentPageNumber=pageNumber">
- <!--访问路径中后置数据.效果如xx.do?method=search-->
- <pg:param name="method" value="search"/>
- <pg:first>
- <a href="${pageUrl}">首页</a>
- </pg:first>
- <pg:prev>
- <a href="${pageUrl }">前页</a>
- </pg:prev>
- <pg:pages>
- <c:choose><!--jstl标签.这里就不解析-->
- <c:when test="${currentPageNumber eq pageNumber }">
- <font color="red">${pageNumber }</font>
- </c:when>
- <c:otherwise>
- <a href="${pageUrl }">${pageNumber }</a>
- </c:otherwise>
- </c:choose>
- </pg:pages>
- <pg:next>
- <a href="${pageUrl }">后页</a>
- </pg:next>
- <pg:last>
- <a href="${pageUrl }">尾页</a>
- </pg:last>
- </pg:pager>
${pageUrl}这是pager-taglib定义的el表达式...表示为url="访问页面的url地址"加上<pg:param name="method" value="search"/>形成的访问地址.
pg:pager【这个标签用来设置分页的总体参数】重要参数说明:
url:分页的链接根地址,pager标签会在这个链接的基础上附加分页参数
items:总记录数,pager标签正是根据这个值来计算分页参数的
maxPageItems:每页显示的行数,默认为10
maxIndexPages:在循环输出页码的时候,最大输出多少个页码,默认是10
pg:first【第一页的标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 首页第一行的索引值
lastItem - 首页最后一行的索引值
pg:pre【上一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 前页第一行的索引值
lastItem - 前页最后一行的索引值
pg:next【下一页标签】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 下页第一行的索引值
lastItem - 下页最后一行的索引值
pg:last重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - 尾页第一行的索引值
lastItem - 尾页最后一行的索引值
pg:pages【这个标签用来循环输出页码信息】重要参数说明:
export变量的意义:
pageUrl - 分页链接URL地址(最重要的export参数)
pageNumber - 页码
firstItem - pageNumber这个页码指定的那一页的第一行的索引值
lastItem - pageNumber这个页码指定的那一页的最后一行的索引值
这时候可能还有疑问.那页面中怎么知道他访问是第几页和每页显示多少数据量.
这里我们可以使用一个过滤类进行过滤:PagerFilter.java
- public class PagerFilter implements Filter {
- public void destroy() {
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- HttpServletRequest httpRequest = (HttpServletRequest)request;
- SystemContext.setOffset(getOffset(httpRequest));
- SystemContext.setPagesize(getPagesize(httpRequest));
- try{
- chain.doFilter(request, response);
- }finally{
- //清空ThreadLocal中的值
- SystemContext.removeOffset();
- SystemContext.removePagesize();
- }
- }
- protected int getOffset(HttpServletRequest request){
- int offset = 0;
- try {
- offset = Integer.parseInt(request.getParameter("pager.offset"));//这里是pager-taglib的一个属性获取当前页
- } catch (NumberFormatException ignore) {
- }
- return offset;
- }
- protected int getPagesize(HttpServletRequest request){
- return 10;//设置每页显示10条数据.这里可以进行更灵活的控制
- }
- public void init(FilterConfig arg0) throws ServletException {
- }
从上面可以看到使用了SystemContext这里类.这个是自己写的一个利用threadLocal模式的.为防止一些数据的重复
- public class SystemContext {
- private static ThreadLocal offset = new ThreadLocal();
- private static ThreadLocal pagesize = new ThreadLocal();
- public static int getOffset(){
- Integer os = (Integer)offset.get();
- if(os == null){
- return 0;
- }
- return os;
- }
- public static void setOffset(int offsetvalue){
- offset.set(offsetvalue);
- }
- public static void removeOffset(){
- offset.remove();
- }
- public static int getPagesize(){
- Integer ps = (Integer)pagesize.get();
- if(ps == null){
- return Integer.MAX_VALUE;
- }
- return ps;
- }
- public static void setPagesize(int pagesizevalue){
- pagesize.set(pagesizevalue);
- }
- public static void removePagesize(){
- pagesize.remove();
- }
- }
最后在web.xml中配置上过滤器
- <filter>
- <filter-name>pagerFilter</filter-name>
- <filter-class>xxx(当前路径).PageFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>pagerFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
而在使用当中查询时候遇到中文查询时候将会出现乱码的问题.这里需要进行对源码进行一些修改:
第一:在下载源码后找到PagerTag.java这里类中addParam方法将
value = java.net.URLEncoder.encode(value,"UTF-8");--添加一个"UTF-8"的转换形式.
.第二:在传输数据当中.需要将你传输的数据进行URLEncoder.encode(data)加密.如下:
<pg:param name="method" value="<%URLEncoder.encode(request.getAtrribute("xxx"))%>"/>
然后在获取数据的时候再进行解码.这样子就防止传输中文的时候出现中文乱码的问题.
xxx = URLDecoder.decode(request.getAtrribute("xxx"));//解码.再操作
这只是使用到的一些功能.还有许多操作是没有使用到的也需要学习.
总的来说这个分页比较方便使用.而还存在点问题.扩展性好像也不咋样.正在看其源码希望可以写个好用的
http://dtfy56924.iteye.com/blog/446280
- pager-taglib分页的使用
- Pager-taglib分页使用
- pager-taglib分页控件的使用总结
- pager-taglib分页处理的使用
- pager-taglib的使用(jsp分页)
- pager-taglib分页处理的使用
- 分页框架(Pager-taglib)的使用
- 使用Pager-taglib进行分页
- 使用pager-taglib分页案例
- 使用pager-taglib完成分页,以及对分页的分装
- 使用pager-taglib的jar包实现分页的方法
- pager-taglib分页框架的使用和相关的封装
- 使用pager-taglib.jar实现的分页技术
- Java中 分页组件Pager-taglib的使用
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- SSH pager-taglib分页的实现 具体使用方法 分页pager
- java中的分页(使用pager-taglib)
- Word代码片段制作方法
- 新环境下,CIO应具备哪些能力和领导力
- linux nis 用户 集中 统一 认证
- C++ - 实现strcpy函数
- Jquery插件值colorBox常见问题
- pager-taglib分页的使用
- VLC media player dll 动态链接库 生成lib 方法 (VS2005 command prompt)
- IT转型:一个“值得期待的改变”
- qt中文乱码详解
- Asp.net页面之间传递参数的几种方法
- ASP.NET预备知识(二)
- UBUNTU安装PHP环境
- 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
- i.mx53 gpio 中断号的确定