Primefaces datatable lazyloading分页行数被错误地显示

我想为Primefaces数据表实现lazyloading。我有我已经实现Primefaces datatable lazyloading分页行数被错误地显示

public List<Request> getRequest(int startingAt, int maxPerPage, 

String sortField, SortOrder sortOrder, Map<String,

String> filters) {

Criteria criteria = sessionFactory.getCurrentSession().

createCriteria(Request.class);

for (Map.Entry<String, String> entry : filters.entrySet()) {

if(entry.getValue()!=null){

criteria.add(Restrictions.ilike("prNo",

"%"+entry.getValue()+"%"));

}

}

criteria.setMaxResults(maxPerPage);

criteria.setFirstResult(startingAt);

return criteria.list();

}

和JSF页面过滤条件

<p:column id="prNo" filterBy="#{req.prNo}" 

headerText="PR No">

<h:outputText value="#{req.prNo}" />

</p:column>

我现在面临的问题是,当过滤行显示n数据表分页号码并没有改变,它显示了实际的记录数量。 例如如果过滤器匹配过滤条件的条件和行数为12,则分页应该显示为1 of 3,并且页面应该像。查看所附的屏幕截图。

Lazymodel rowCount时被设置为

lazyModel.setRowCount(getRequestService().getRequestCount()); 

它的实现

int count = ((Long) sessionFactory.getCurrentSession() 

.createQuery("select count(*) from Request").uniqueResult())

.intValue();

我怎么能做到这一点?

回答:

INMO,你最好使用LazyDataModel(extend it just like in the showcase - DataTable - Lazy Loading)

里面你重写的加载方法,你应该做的过滤逻辑,并有结果,不是得到它的大小和使用它...

以上是 Primefaces datatable lazyloading分页行数被错误地显示 的全部内容, 来源链接: utcz.com/qa/263237.html

回到顶部