• pager-taglib 使用说明


    来源:http://ysen.iteye.com/blog/626524

    1、拷贝pager-taglib.jar包
    2、在JSP页面中使用taglib指令引入pager-taglib标签库
    3、使用pager-taglib标签库进行分页处理

     

     

    传两个值进去:1、pm.totles总记录数 2、pagesize 每页显示页数 3、<pg:param name="parentId"/>传给后台的变量值对(查询条件)

    Java代码  收藏代码
    1. <!-- 可以在这里插入分页导航条 -->  
    2.           
    3.           
    4.           
    5. pg:pager url="org.action" items="${pm.totles}"  export="currentPageNumber=pageNumber" maxPageItems="${pagesize}">  
    6.     <pg:param name="parentId"/>  
    7.       
    8.        
    9.     <pg:first>  
    10.         <a href="${pageUrl}">首页</a>  
    11.     </pg:first>  
    12.     <pg:prev>  
    13.         <a href="${pageUrl}">前页</a>  
    14.     </pg:prev>  
    15.     <pg:pages>  
    16.         <c:choose>  
    17.             <c:when test="${currentPageNumber eq pageNumber}">  
    18.                 <font color="red">${pageNumber }</font>  
    19.             </c:when>  
    20.             <c:otherwise>   
    21.                 <a href="${pageUrl}">${pageNumber }</a>  
    22.             </c:otherwise>  
    23.         </c:choose>  
    24.     </pg:pages>  
    25.     <pg:next>  
    26.         <a href="${pageUrl}">后页</a>  
    27.     </pg:next>  
    28.     <pg:last>  
    29.         <a href="${pageUrl}">尾页</a>  
    30.     </pg:last>  
    31. /pg:pager>    

     

    struts2的配置文件 变量拦截器中添加 pager.offset 这个值是页面标签传给后台进行分页的

    Xml代码  收藏代码
    1.  <interceptor-ref name="params">  
    2.                   <param name="excludeParams">dojo..*,^struts..*,pager.offset</param>  
    3.                 </interceptor-ref>  

     

     

     定义一个获取分页所需变量的拦截器 获取pagesize 每页数 与 开始记录数pager.offset

     

    Java代码  收藏代码
    1. public class PagerInterceptor extends AbstractInterceptor{  
    2.   
    3.     @Override  
    4.     public String intercept(ActionInvocation invocation) throws Exception {  
    5.           
    6.   
    7.         SystemContext.setOffset(getOffset());  
    8.         SystemContext.setPageSize(getPagesize());  
    9.           
    10.           
    11.   
    12.         try{  
    13.             return invocation.invoke();  
    14.         }finally{  
    15.             SystemContext.removeOffset();  
    16.             SystemContext.removePagesize();  
    17.         }  
    18.           
    19.           
    20.           
    21.     }  
    22.   
    23.       
    24.     private int getOffset(){  
    25.         int offset = 0;  
    26.           
    27.         try {  
    28.             offset = Integer.parseInt(ServletActionContext.getRequest().getParameter("pager.offset"));  
    29.         } catch (Exception ignore) {  
    30.         }  
    31.         return offset;  
    32.     }  
    33.       
    34.     private int getPagesize(){  
    35.     int pagesize = 0;  
    36.           
    37.         try {  
    38.             pagesize = Integer.parseInt(ServletActionContext.getRequest().getParameter("pagesize"));  
    39.         } catch (Exception ignore) {  
    40.         }  
    41.           
    42.         if(pagesize==0){  
    43.               
    44.             pagesize=10;  
    45.               
    46.         }  
    47.     //  System.out.println(pagesize);  
    48.         return pagesize;  
    49.     }  
    50.   
    51. }  

     

    上面使用了两个ThreadLocal 变量 存储上面的两个值

     

    Java代码  收藏代码
    1. public class SystemContext {  
    2.       
    3.     public static ThreadLocal offset = new ThreadLocal();  
    4.       
    5.     public static ThreadLocal pageSize = new ThreadLocal();  
    6.       
    7.     public static int DEFAULT_PAGE_SIZE= 10;   
    8.   
    9.     public static  void setOffset(int _offset){  
    10.           
    11.         offset.set(_offset);  
    12.           
    13.     }  
    14.   
    15.     public static int getOffset(){  
    16.           
    17.         Integer _offset = (Integer)offset.get();  
    18.           
    19.         if( _offset ==null){  
    20.               
    21.             _offset=0;  
    22.         }  
    23.            
    24.          return _offset;  
    25.     }  
    26.       
    27.     public static void removeOffset(){  
    28.         offset.remove();  
    29.     }  
    30.       
    31.       
    32.     public static void setPageSize(int _pageSize){  
    33.           
    34.         pageSize.set(_pageSize);  
    35.     }  
    36.       
    37.     public static int getPageSize(){  
    38.           
    39.         Integer _pageSize= (Integer)pageSize.get();  
    40.           
    41.         if( _pageSize ==null){  
    42.               
    43.             _pageSize=DEFAULT_PAGE_SIZE;  
    44.         }  
    45.            
    46.          return _pageSize;  
    47.        
    48.     }  
    49.       
    50.     public static void removePagesize(){  
    51.         pageSize.remove();  
    52.     }  
    53. }  

     

     

     

     

      通过从threadlocal 中获取分页所需的变量,就可以在业务类中获取这两个变量,避免了在每个action中传值的麻烦

    Java代码  收藏代码
    1. public class BaseManager extends HibernateDaoSupport {  
    2.   
    3. ...  
    4.   
    5.   
    6.   
    7. PageMode searchOrgs(String hql, Object[] objects){  
    8. ...       
    9.         int offset  = SystemContext.getOffset();  
    10.         int pageSize = SystemContext.getPageSize();  
    11.           
    12. ...  
    13.     List datas =   query.setFirstResult(offset).setMaxResults(pageSize).list();  
    14. ...  
    15. }  
    16.   
    17.   
    18. }  

     

     

     

     

     

     

     

      为了使用方面将上面的分页标签页面提取出公共的部分

    Html代码  收藏代码
    1. <body>  
    2. <pg:pager items="1001" maxPageItems="33" maxIndexPages="20" export="currentPageNumber=pageNumber">  
    3.     <pg:first>  
    4.         <a href="${pageUrl }">首页</a>  
    5.     </pg:first>  
    6.     <pg:prev>  
    7.         <a href="${pageUrl }">前页</a>  
    8.     </pg:prev>  
    9.     <pg:pages>  
    10.         <c:choose>  
    11.             <c:when test="${currentPageNumber eq pageNumber}">  
    12.                 <font color="red">${pageNumber }</font>  
    13.             </c:when>  
    14.             <c:otherwise>  
    15.                 <a href="${pageUrl }">${pageNumber }</a>  
    16.             </c:otherwise>  
    17.         </c:choose>  
    18.     </pg:pages>  
    19.     <pg:next>  
    20.         <a href="${pageUrl }">下页</a>  
    21.     </pg:next>  
    22.     <pg:last>  
    23.         <a href="${pageUrl }">尾页</a>  
    24.     </pg:last>  
    25. </pg:pager>  
    26. </body>  

     

       需要分页的页面只需如下调用:将url 传进去

     

    Html代码  收藏代码
    1.         <!-- 可以在这里插入分页导航条 -->  
    2.    <s:include value="/common/pager.jsp">  
    3.         <s:set var="url" value="'org.action'"/>  
    4.       <s:set var="params" value="#{'parentId':null}"/>  
    5.    </s:include>  

     

     

     

    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这个页码指定的那一页的最后一行的索引值


  • 相关阅读:
    mysql 触发器
    监听mac价格变动,降价了就通知。
    mysql 索引、约束
    mysql 三种insert插入语句
    idea 控制台中文乱码
    go 刷算法第三题——二叉树根节点到叶子节点和为指定值的路径
    mysql 排序序号sql+斐波那契统计
    go 刷算法第二题——最长回文子串
    常见排序算法-基数排序、计数排序
    常见排序算法-选择、冒泡排序
  • 原文地址:https://www.cnblogs.com/IntelligentBrain/p/5111320.html
Copyright © 2020-2023  润新知