小弟 很急```解决问题后分数会追加

解决方案 »

  1.   

    displaytag提供两种分页方式,一种是一次性查出所有数据,每次翻页时由displaytag从这个数据集中截取区间来显示。当数据量较大时,如10万条以上,性能是非常低下的。因为每次翻页都会重新查询所有的数据出来。
    第二种方式嘛,就是常用的动态分页啦。你在后台需要提供两个个分页查询方法:
    A方法:传入两个参数(1:从第几行开始;2:查多少条),这个方法的实现也简单,要么用sql要么用hibernate的分页,将指定的数据集查出来就可以了。
    附一个分页的hibernate实现:
    public List getTaskConfsByPage(final int firstResult, final int maxResults) {
    return getHibernateTemplate().executeFind(new HibernateCallback() {
    public Object doInHibernate(Session s) throws HibernateException,
    SQLException {
    String hql="from TaskConf as tc order by tc.id desc";
    Query query = s.createQuery(hql);
    query.setFirstResult(firstResult);
    query.setMaxResults(maxResults);
    return query.list();
    }
    });
    }
    B方法:查询出总的有多少条记录。这个最简单,就是count(*)
    public long getTaskConfCount() {
    String hql="select count(*) from TaskConf as tc";
    List list = getHibernateTemplate().find(hql);
    if (!list.isEmpty()) {
    return ((Long) list.get(0)).longValue();
    } else {
    return 0;
    }
    }有了这两个方法,你就可以在jsp中或struts的action中调用并获得两个对象(一个是结果集,一个是总记录数),把这两个东西放到request中,等待jsp中的displaytag使用。
            String pageIndexName = new org.displaytag.util.ParamEncoder("taskConfList").encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);   // 页数的参数名
            int pageSize = 10;   //每页显示的条数
            int pageIndex = GenericValidator.isBlankOrNull(request.getParameter(pageIndexName))?0:(Integer.parseInt(request.getParameter(pageIndexName)) - 1);  //当前页数
            List resultList = mgr.getTaskConfsByPage(pageIndex*pageSize, pageSize);
            request.setAttribute("taskConfList", resultList);
            long resultSize = mgr.getTaskConfCount();
            request.setAttribute("taskConfSize", new Integer(new Long(resultSize).intValue()));回到jsp的displaytag配置部分:
    <display:table name="taskConfList" cellspacing="0" cellpadding="0"
        id="taskConfList" pagesize="10" class="table taskConfList"
        export="false" requestURI="" partialList="true" size="taskConfSize">
        
    <display:column><input type="checkbox" name="taskConfCheck" value="<c:out value="${taskConfList.id}" />" /></display:column>
        <display:column property="taskName" sortable="true" headerClass="sortable"
            url="/editTaskConf.html" paramId="id" paramProperty="id"
            titleKey="taskConfForm.taskName"/>
    </display:table>
    这里就不难看懂了,name="taskConfList"指的就是request中的结果集的名称,size="taskConfSize"指的就是总记录数。
    特别注意的是partialList="true",这是告诉displaytag使用动态分页,如果没有这个设置,那就是刚才说的一次性查询的模式。
      

  2.   

    你这个我也用了,我是统计页正好适合这个,,不过发现还是第一加载的时候挺慢的。。不过其他还好挺方便