我曾经做过所有页面对应一个action。把分页邦定在struts和hibernate上,好像不太好吧,呵呵。

解决方案 »

  1.   

    hibernate已经提供了分页功能,搂住还在找什么呢?
    /**
     * 根据最大页数、开始记录数返回对应记录集
     * @param pageSize 最大页数
     * @param page     开始记录数
     * @return
     * @throws Exception
     */
    public List getRSofPage(int pageSize,int page) throws Exception {
    List retList = new ArrayList();
    Session sess = null;
    try {
    sess = HibernateUtil.currentSession();
    Transaction tx = sess.beginTransaction();
    Query q = sess
    .createQuery("from com.mail.form.channel.Channel where ParentId is not 0 order by ParentId ,ChannelId ");
    q.setMaxResults( pageSize );
    q.setFirstResult( (page - 1) * pageSize );
    retList = q.list();
    tx.commit();
    //log
    logger.info("(@@@@@@@@@@@ 根据最大页数、开始记录数返回对应记录集执行正常 @@@@@@@@@@@)");
    } catch (HibernateException he) {
    //log
    logger.error("(@@@@@@@@@@@ 根据最大页数、开始记录数返回对应记录集执行异常 @@@@@@@@@@@)", he);
    new org.hibernate.HibernateException("getRSofPage():"+listErrors);
    } finally {
    try {
        HibernateUtil.closeSession();
    } catch (HibernateException he) {
    new org.hibernate.HibernateException(
    "HibernateUtilServlet.closeSession()");
    }
    }
    return retList;
    }
      

  2.   

    用google搜索:
    Struts+Hibernate开发实践分页的实现你就可以找到你需要的。
      

  3.   

    简单的来说,在net.sf.hibernate.Query类中有setMaxResults(int value)和setFirstResult(int value)两方法,而在Struts的Action中,将通过query.list()的结果赋给一List对象即可在页面中显示该List的每个对象(通过变量currentPage, totalPages等来控制是具体哪一页)
      

  4.   

    Struts+Hibernate开发实践分页的实现,我就是在看了这篇文章后才想到的.它并不是通用的.
    因为每个页面对应的查询语句肯定是不同的.我的想法就是每个页面自己对应一个action来设置这些参数 然后调用他的东西但是我始终觉得这个还不是具有通用的含义
      

  5.   

    我曾经在blogjava上看到有人将“Struts+Hibernate开发实践分页的实现”进一步分装,只要调用分装好的类,传几个参数进去就行了。