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);
??? ??? }
??? }