如题:请教高手查询后的分页(struts+JDBC连接池的老系统)就是查询后的结果仍然需要分页,但当点击下一页触发action的时候,查询的限定条件怎么保存传递给后台的查询操作,
用request肯定不行,因为第一次查询完了没有了,用session吗?请高手赐教

解决方案 »

  1.   

    查询方式确定下来的话 直接写进action里 判断一下是不是从查询页面调用的就行了BrandForm formBean = (BrandForm) form;
    PageView<Brand> pv = new PageView<Brand>(formBean.getPage(), 12);
    int startIndex = (pv.getCurrentPage() - 1) * pv.getMaxResult(); LinkedHashMap<String, String> orderBy = new LinkedHashMap<String, String>();
    orderBy.put("name", "asc");
    ArrayList<Object> params = new ArrayList<Object>();
    params.add(true);
    StringBuffer sb = new StringBuffer("o.visible=?1");
    if (formBean.getQuery() != null//如果是从查询页面调用,拼上where
    && !"".equals(formBean.getQuery().trim())) {
    sb.append(" and o.name like?2");
    params.add("%" + formBean.getName() + "%");
    }
    System.out.println(pv.getMaxResult());
    QueryResult<Brand> qr = brandService.getScrollData(Brand.class,
    startIndex, pv.getMaxResult(), sb.toString(), params.toArray(),
    orderBy); pv.initialize(qr);
    logger.debug("jpql where : " + sb);
    request.setAttribute("pageView", pv);
    return mapping.findForward("list");
      

  2.   

    你把分页写在独立的class里在DAO中调用分页类,在action中调用DAO
    应该不用session用request就够用了
      

  3.   

    楼主把你的邮箱告诉我,我有一个用structs+jdbc+javabean写过分页
      

  4.   

    Action里面定义int page,int totalpage,int perPage(每页显示的数量)
        点击下一页时page = page+1把page以及perPage传过去
         sql 语句
         String sql = "select ... where rownum > page and rownum <page+perPage+1"
        当前的结果集取得后显示在页面上
      

  5.   

    分页那里用from,点下一页的时候提交from,搜索或换页的时候用JS设置条件到from
      

  6.   

    就是查询后的结果仍然需要分页,但当点击下一页触发action的时候,查询的限定条件怎么保存传递给后台的查询操作, 你可以这样在第一次查询的时候,将查询条件存放字符串中,并用request.setAbbutirte("queryCondition",查询条件);在查询结果页面,使用隐藏域接收这个queryCondition,当触发下一页查询的时候检查隐藏域是否值,存在则直接使用,不存在则使用页面上现有的查询条件
      

  7.   

    在Servelt或Action里面设置变量
        int page;
        int perPage;
        String orderBy;
      

  8.   

    用分页组件Display tag 吧
      是一个成熟的业界开源分页组件。
       前几天刚用的蛮好用的。