当前位置: 代码迷 >> Web前端 >> primefaces 3.2 使用dataTable的分页时出现的有关问题
  详细解决方案

primefaces 3.2 使用dataTable的分页时出现的有关问题

热度:635   发布时间:2012-08-15 16:57:17.0
primefaces 3.2 使用dataTable的分页时出现的问题

具体问题是:例如我现在有81条数据,每页显示20行数据,能显示5页数据,总行数是81。当我删除第五页最后一条数据时,分页的数据显示的是第四页的数据,但是行数变成100 页数显示的是5/4,分页的效果右边还可以点击。

?

?

代码如下:

public LazyDataModel<E> findModel(final String jpql,
??? ??? ??? final Map<String, String> values) {

??? ??? LazyDataModel<E> lazyModel = new LazyDataModel<E>() {
??? ??? ??? @Override
??? ??? ??? public List<E> load(int first, int pageSize, String sortField,
??? ??? ??? ??? ??? SortOrder arg3, Map<String, String> arg4) {
??? ??? ??? ??? // TODO Auto-generated method stub
??? ??? ??? ??? integer = Long.valueOf(getResultCount(values))//获得数据库总数据
??? ??? ??? ??? ??? ??? .intValue();
??? ??? ??? ??? setRowCount(integer);//设置总行数
??? ??? ??? ??? querys = createQuery(jpql, values);//查询数据库
??? ??? ??? ??? setPageParameterToQuery(querys, first,pageSize, integer,this);//设置分页参数
??? ??? ??? ??? return (List<E>) querys.getResultList();
??? ??? ??? }
??? ??? };
??? ??? lazyModel.setPageSize(20);
??? ??? lazyModel.setRowCount(1);
??? ??? return lazyModel;
??? }

?

/**
??? ?* @see 设置结果集
??? ?* @param query
??? ?* @param first 结果偏移量
??? ?* @param pageSize 最大查询数量
??? ?*/
??? private void setPageParameterToQuery(javax.persistence.Query query,
??? ??? ??? int first, int pageSize,int count,LazyDataModel ldm) {
??? ??? System.out.println("偏移量:"+first+":"+count);
??? ??? if(first == count)
??? ??? {
??? ??? ??? query.setFirstResult(first-pageSize);
??? ??? ??? query.setMaxResults(pageSize);
??? ??? ??? System.out.println("设置偏移量");
??? ??? }else{
??? ??? query.setFirstResult(first);
??? ??? query.setMaxResults(pageSize);
??? ??? }
??? }

  相关解决方案