您现在的位置: 爱51代码网 >> 范文 >> 文章正文
Strus2 + pager-taglib 实现分页

27.           SystemContext.removeOffset(); 
28.           SystemContext.removePagesize(); 
29.        } 
30.       return result; 
31.    } 
32. 
33.    private int getOffset(HttpServletRequest request) { 
34.       int offset = 0; 
35.       try { 
36.        offset = Integer.parseInt(request.getParameter("pager.offset")); 
37.       } catch (Exception ignore) { 
38.       } 
39.       return offset; 
40.    } 
41.    private int getPagesize(HttpServletRequest httpRequest) { 
42.       // 首先判断request中是否有pagesize参数,如果有这个参数,证明客户端正在请求改变每页显示的行数  
43.           String psvalue = httpRequest.getParameter(PAGE_SIZE_NAME); 
44.           if (psvalue != null && !psvalue.trim().equals("")) { 
45.                Integer ps = 0; 
46.                try { 
47.                    ps = Integer.parseInt(psvalue); 
48.                } catch (Exception e) { 
49.                } 
50.                if (ps != 0) { 
51.                    httpRequest.getSession().setAttribute(PAGE_SIZE_NAME, ps); 
52.                } 
53.           } 
54.           // 判断当前session中是否有pagesize的值  
55.           Integer pagesize = (Integer) httpRequest.getSession().getAttribute(PAGE_SIZE_NAME); 
56.           if (pagesize == null) { 
57.                Integer pageSize= Integer.parseInt(ServletActionContext.getServletContext().getInitParameter("pageSize"));//这里没有用try拦截异常,以为在它的上层拦截了异常.此处进行了每页记录数可配置的扩展功能.  
58.                httpRequest.getSession().setAttribute(PAGE_SIZE_NAME, pageSize); 
59.                return pageSize; 
60.           } 
61.           return pagesize; 
62.        } 
63.    } 
package com.ssh.utile;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class PagerInterceptor extends MethodFilterInterceptor {
 public static final String PAGE_SIZE_NAME = "ps";
 @Override
 protected String doIntercept(ActionInvocation invocation) throws Exception {
  String result=""; 
  try {
     //在调用真正的方法之前在线程内设置pagesize和offset.
     HttpServletRequest httpRequest = ServletActionContext.getRequest();
     SystemContext.setOffset(getOffset(httpRequest));
     SystemContext.setPagesize(getPagesize(httpRequest));
     //调用真正的方法.
     result=invocation.invoke();
  } catch (Exception e) {
     e.printStackTrace();
     throw new RuntimeException("分页时传入参数出错!");
  }finally {
     //不管是否调用真正的方法,都要移除线程内的ThreadLocal对象.
     SystemContext.removeOffset();
     SystemContext.removePagesize();
  }
    return result;
 }

 private int getOffset(HttpServletRequest request) {
    int offset = 0;
    try {
     offset = Integer.parseInt(request.getParameter("pager.offset"));
    } catch (Exception ignore) {
    }
    return offset;
 }
 private int getPagesize(HttpServletRequest httpRequest) {
    // 首先判断request中是否有pagesize参数,如果有这个参数,证明客户端正在请求改变每页显示的行数
     String psvalue = httpRequest.getParameter(PAGE_SIZE_NAME);
     if (psvalue != null && !psvalue.trim().equals("")) {
       Integer ps = 0;
       try {
        ps = Integer.parseInt(psvalue);
       } catch (Exception e) {
       }
       if (ps != 0) {
        httpRequest.getSession().setAttribute(PAGE_SIZE_NAME, ps);
       }
     }
     // 判断当前session中是否有pagesize的值
     Integer pagesize = (Integer) httpRequest.getSession().getAttribute(PAGE_SIZE_NAME);
     if (pagesize == null) {
       Integer pageSize= Integer.parseInt(ServletActionContext.getServletContext().getInitParameter("pageSize"));//这里没有用try拦截异常,以为在它的上层拦截了异常.此处进行了每页记录数可配置的扩展功能.
       httpRequest.getSession().setAttribute(PAGE_SIZE_NAME, pageSize);
       return pageSize;
     }
     return pagesize;
  }
 }
在Struts2的配置文件中配置如下:


[html] view plaincopyprint?
01.             <interceptors> 
02.    <interceptor name="pager" class="com.ssh.utile.PagerInterceptor" /> 
03.    <interceptor-stack name="myInterceptor"> 
04.        <interceptor-ref name="pager"> 
05.            <!--<param name="includeMethods">queryUser</param>--> 
06.        </interceptor-ref> 
07.        <interceptor-ref name="defaultStack"></interceptor-ref> 
08.    </interceptor-stack> 
09.</interceptors>    
               <interceptors>
      <interceptor name="pager" class="com.ssh.utile.PagerInterceptor" />
      <interceptor-stack name="myInterceptor">
       <interceptor-ref name="pager">
        <!--<param name="includeMethods">queryUser</param>-->
       </interceptor-ref>
       <interceptor-ref name="defaultStack"></interceptor-ref>
      </interceptor-stack>
  </interceptors> 

[html] view plaincopyprint?
01.     <action name="user" class="userAction" > 
02.    <result name="showQuery">/showQuery.jsp</result> 
03.    <result name="error">/error.jsp</result> 
04.    <result name="showUpdate">/update.jsp</result>           
05.    <result name="success">/pub_add_success.jsp</result> 
06.    <interceptor-ref name="myInterceptor"></interceptor-ref>     
07.</action> 
         <action name="user" class="userAction" >
       <result name="showQuery">/showQuery.jsp</result>
      <result name="error">/error.jsp</result>
      <result name="showUpdate">/update.jsp</result>      
      <result name="success">/pub_add_success.jsp</result>
      <interceptor-ref name="myInterceptor"></interceptor-ref>    
    </action>
在web.xml中加入下面的配置:运动会加油稿 

 

[html] view plaincopyprint?
01.<context-param> 
02.   <param-name>page_size</param-name> 
03.   <param-value>5</param-value> 
04.</context-param> 
<context-param>
   <param-name>page_size</param-name>
   <param-value>5</param-value>
</context-param>
再加一句,使用Spring的AOP编程也是完全可以实现的.

上一页  [1] [2] 

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    青少年吸烟心理探析
    保险受益人制度相关问题的探讨
    linux内核启动时R2的值来历
    JS中setInterval、setTimeou
    javascript 中强制执行 toSt
    SQL Server UNIQUE失效
    SQLServer2005中的企业管理器
    SQL Sever 如何修改主键数据
    sqlserver如何根据给出的时间
    解决SecureCRT连接linux超时
    dos编程:查询百度蜘蛛IP的命
    CSS下img图片多余空白或者是
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |