我正在尝试为 Primefaces 数据表实现延迟加载。我有一个过滤条件,我已将其实现为
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,页面应类似于 1 2 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 )
在重写的加载方法中,您应该执行过滤逻辑并获得结果,而不是获取其大小并使用它...
关于java - Primefaces数据表延迟加载分页行数显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13965336/