s2sh displaytag大量数据分页

struts2 Action
public class UserMgmtAction extends BaseAction {
        //service
        private UserMgmtService userMgmtService ;
        //画面属性bean
        private UserInfoBean userInfoBean;
        //分页属性bean
        private PageBean pageBean;
        //选择框
        private String [] selected;

        /***
         * 根据画面条件查询
         * @return
         */
        public String queryUserListByCondition(){
                 String pageIndexName = new ParamEncoder(pageBean.getTagId()).encodeParameterName(
                org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);
                 String pageIndex = this.getRequest().getParameter(pageIndexName);
                 //页数
             int page = SimpleStringUtils.toInt(pageIndex);
             // 取得页面当前页的下标
             String pageSizeStr = PropertiesUtil.getPropertiesValueByKey(this.getClass(), ContantsUtil.PAGEPROPERTIES, ContantsUtil.PAGESIZE);
                 //查询List
                 List<?> userList=null;
                //获取当前大分页数
                int num = 1;
             if(this.getSession().getAttribute("num")==null){
                     this.getSession().setAttribute("num",num);
             }else{
                     String s =this.getSession().getAttribute("num").toString();
                     //SimpleStringUtils 自定义的字符串工具类
                     num = SimpleStringUtils.toInt(s);
             }
             //每次先从数据库查询1000条
             int maxResult =1000;
              //判断pageBean是否为NULL
            int pageSize = pageBean.getPageSize();
            //临时总分页数(分页中套分页)
            int tempPages = maxResult / pageSize;
            //判断是否超出临时查询页数范围
            if(page > num*tempPages
                            || page <=(num-1)*tempPages
                            || this.getSession().getAttribute("list")==null){
                    //获取当前大分页数
                    num = page % tempPages ==0 ? page/tempPages: page/tempPages+1;
                    //
                    int outIndex = page % tempPages;
                    if(outIndex==0){
                            outIndex=1;
                    }
                    if(num == 0){
                            num = 1;
                    }
                    this.getSession().setAttribute("num",num);
                    //getUserListByCondition()调用的是Hibernate分页参数分别是画面bean,outIndex*maxResult=查询开始页数firstresult,maxResult=每次查询最大结果集,count=总共长度
                    int result = (num-1)*maxResult;
                    try{
                        count = userMgmtService.getRowCount(userInfoBean);
                            userList = userMgmtService.getUserListByCondition(userInfoBean, result, maxResult, count);
                    }catch(Exception ex){
                            ex.printStackTrace();
                    }
                     // 翻页时是否查询
                pageBean.setPartialList(true);
                // 设置每页显示记录数
                pageBean.setPageSize(Long.valueOf(pageSizeStr).intValue());
                // 记录总条数
                pageBean.setSize(count);
                //
                List showList = new  ArrayList(pageSize);
                //
                if(userList.size() < pageSize){
                        pageSize = userList.size();
                        showList.addAll(userList);
                }else{
                         for(int i=(outIndex-1)*pageSize;i<outIndex*pageSize;i++){
                                    Object obj = userList.get(i);
                                    showList.add(obj);
                            }
                }        
                pageBean.setPageList(showList);
                        this.getSession().setAttribute("pageBean", pageBean);
                        this.getSession().setAttribute("list", userList);
            }else{
                    pageBean = (PageBean)this.getSession().getAttribute("pageBean");
                    List<?> list = (List<?>) this.getSession().getAttribute("list");
                    int outIndex = page % tempPages;
                    if(outIndex==0){
                            if(page==1){
                                    outIndex=1;
                            }else{
                                    outIndex=tempPages;
                            }
                    }
                    List tempList = new ArrayList(pageSize);
                    for(int i=(outIndex-1)*pageSize;i<outIndex*pageSize;i++){
                            Object obj = list.get(i);
                            tempList.add(obj);
                    }
                    pageBean.setPageList(tempList);
                    this.getSession().setAttribute("pageBean", pageBean);
            }
                return "queryUserList";
        }
get set ...省略

jsp

<display:table
                                            size="${pageBean.size}"
                       partialList="${pageBean.partialList}"
                       pagesize="${pageBean.pageSize}"
                       name="sessionScope.pageBean.pageList"
                       id="${pageBean.tagId}"
                       requestURI="${pageBean.requestURI}"
                       export="${pageBean.export}"
                       >
               <display:column style="width:5%;text-align:center"  headerClass="dataHead" property="uid"
    title="<input type='checkbox' name='checkall' value='all' οnclick='checkAll();' />"   decorator="com.ssh.jyht.sch.extend.displaytag.chx.CheckboxColumnWrapper" />
                <display:column property="uid" title="编号" sortable="${pageBean.sortable}" style="width:33%;"/>
                <display:column property="username" title="用户名" sortable="${pageBean.sortable}" style="width:33%;"/>
                <display:column property="password" title="密码" sortable="${pageBean.sortable}" style="width:34%;"/>

详细请参考http://izixue.com/?fromuid=1544 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值