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