displaytag分页

 
      应用displaytag在struts中完成大数据量分页显示,Oracle数据库
      
      JSP文件:
       
     

 <%...@ taglib uri="/WEB-INF/displaytag.tld" divfix="disp" %>

      <disp:table name="resultList" export="true" pagesize="100" 
      requestURI="logQueryAction.do" sort="external" id="element" 
      partialList="true" size="resultSize">
                <disp:column property="operdate" title="操作时间" ></disp:column>
                <disp:column property="pername" title="操作人员" ></disp:column>
                <disp:column property="opertype" title="操作类型" ></disp:column>
      </disp:table> 

name="resultList" 将记录集存在session或者request中的键值
      export="true" 是否显示导出选项
      pagesize="100" 每页显示100条数据
      requestURI="logQueryAction.do"  struts中action的名称,如果记录少,可以直接分页
      sort="external"  外部排序
      id="element"   表格id值,用于程序得相关的参数
      partialList="true"  分段从数据库中读数据
      size="resultSize"  记录的总条数,用于计算总页数、

 

  struts action:

String pageIndexName = new 
      org.displaytag.util.ParamEncoder("element").encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE); 
        // 页数的参数名
              int pageSize = 100;   //每页显示的条数
              int pageIndex = 
      GenericValidator.isBlankOrNull(request.getParameter(pageIndexName))?0:(Integer.parseInt(request.getParameter(pageIndexName)) 
      - 1);  //当前页数
      String sqlCount = "select count(*)  from user_log a ";  //用于统计总记录数的sql语句
              String sql = " select * from (select rownum as rid, t1.* from 
      (select b.pername as pername,to_char(a.operdate,'yyyy-mm-dd hh24:mi:ss') 
      as operdate," +
                      " decode(a.opertype,'D','删除','M','修改','其他') as opertype, 
      a.hphm as hphm from user_log a, " +
                      " (select asuser.userid as 
      userid,nvl(asempmsg.pername,asuser.loginname) as pername from 
      asuser,ASEMPMSG where asuser.perid=ASEMPMSG.perid(+)) b" +
                      " where a.userid=b.userid ";   //查询语句
                  //构造查询条件
              StringBuffer sb = new StringBuffer();
              if(logQueryForm.getCzrqStart()!=null && 
      !"".equals(logQueryForm.getCzrqStart()))...{
                  sb.append(" and a.operdate > 
      to_date('"+logQueryForm.getCzrqStart()+"','yyyy-mm-dd')");
              }
              if(logQueryForm.getCzrqEnd()!=null && 
      !"".equals(logQueryForm.getCzrqEnd()))...{
                  sb.append(" and a.operdate <= 
      to_date('"+logQueryForm.getCzrqEnd()+"','yyyy-mm-dd')");
              }
              if(logQueryForm.getCzlx()!=null && 
      !"".equals(logQueryForm.getCzlx()))...{
                  sb.append(" and a.opertype = '"+logQueryForm.getCzlx()+"'");
              }
              if(logQueryForm.getCzry()!=null && 
      !"".equals(logQueryForm.getCzry()))...{
                  sb.append(" and a.userid = '"+logQueryForm.getCzry()+"'");
              }
           
              sqlCount += sb.toString();
              sql += sb.toString()+" order by a.operdate desc) t1 where 
rownum<="
                              + (pageIndex + 1) * pageSize + " ) t2 where 
      t2.rid>"+ pageIndex * pageSize;  //分页读取语句
              
              //System.out.println(sb.toString());
              DBBean db = new DBBean();
              ResultSet rs = null;
              PreparedStatement divp = null;
              try...{
                  List resultList = db.getResultList(sql);   
      //将ResultSet保存在List里返回
                  request.setAttribute("resultList",resultList);  //把结果存入request
                  divp = db.getConnection().divpareStatement(sqlCount);    
                  rs = divp.executeQuery();
                  if(rs.next())...{
                      request.setAttribute("resultSize",new 
      Integer(rs.getInt(1)));     //将总记录数保存成Intger实例保存在request中
                  }
              }
              catch(Exception ex)...{
                  ex.printStackTrace();
              }
              finally...{
                  if(db!=null)...{
                      db.closeConnection();    //关闭连接
                  } 
              }

 

  其中的页面导航是英文的,只要修改org.displaytag.properties.TableTag.properties配置文件就可以把英文改成中文。
            正在装载数据……
      同时还可以指定导出文件的类型以及文件名。
      export.excel=true
      export.excel.label=<span class="export excel">Excel </span>
      export.excel.include_header=true
      export.excel.filename=export.xls
      如果不指定文件名,在点击导出excel的时候,就会在ie窗口中打开excel文件。很烦人!
      指定文件名后就可以选择保存和打开了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值