pager中的interceptor

2011-06-03 10:08

出现 java.lang.ArithmeticException: / by zero 错误

一般来说是size值没有取到。

下面是自己项目中的解决方法

struts.xml 中分页的配置

<struts>
 <package name="webservice-default" namespace="/" extends="json-default">
  <interceptors>

   <interceptor name="pagerInterceptor" class="com.hereis.ctsz.util.PagerInterceptor">
    <param name="pageSize">10</param>
   </interceptor>
   <interceptor-stack name="comm">
    <interceptor-ref name="pagerInterceptor"></interceptor-ref>
    <interceptor-ref name="defaultStack"></interceptor-ref>
   </interceptor-stack>

    ......

   </interceptors>

 

   <action name="consulting" class="com.hereis.ctsz.action.ConsultingAction">
      <result name="queryConsulting">/ctsz/ask_and_answer/query.jsp</result>

      <result name="queryConsultingContent" type="json"></result>

      <!-- 得加上这个拦截器 -->
      <interceptor-ref name="comm"></interceptor-ref>
   </action>

   ......

 </package>
</struts>

 

com.hereis.ctsz.util.PagerInterceptor.java 中的代码,如下:

 

public class PagerInterceptor extends AbstractInterceptor {
 
 public static final String PAGE_SIZE_NAME = "ps";
 
 private int pageSize = 0 ;
 
 public int getPageSize() {
  return pageSize;
 }

 public void setPageSize(int pageSize) {
  this.pageSize = pageSize;
 }
 
 @Override
 public void init() {
 }
 
 @Override
 public String intercept(ActionInvocation invocate) throws Exception {
  HttpServletRequest httpRequest = ServletActionContext.getRequest();
  SystemContext.setOffset(getOffset(httpRequest));
  SystemContext.setPagesize(getPagesize(httpRequest));
  String result = null;
  try {
   result = invocate.invoke();
  } finally {
   SystemContext.removeOffset();
   SystemContext.removePagesize();
  }
  return result;
 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  
  
 }
 
 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){
//  return 10;
  
  //首先判断request中是否有pagesize参数,如果有这个参数,证明客户端正在请求改变每页显示的行数
  String psvalue = httpRequest.getParameter("pagesize");
  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){
   httpRequest.getSession().setAttribute(PAGE_SIZE_NAME, this.pageSize);
   return this.pageSize;
  }
  
  return pagesize;
 }
 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值