出现 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;
}
}