[英]JSF2 + Primefaces : DataTable lazy loading issue
我想,我的java代碼是正確的,但記錄沒有顯示在dataTable上。
請檢查以下代碼。 我不知道我犯了什么錯誤。
.xhtml
<p:dataTable value="#{userDetailList.userDataList}" var="user" rows="5"
paginator="true" lazy="true"
paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink}
{CurrentPageReport} {NextPageLink} {LastPageLink}">
<p:column headerText="No">
<h:outputText value="#{user.id}"></h:outputText>
</p:column>
<p:column headerText="User Name">
<h:outputText value="#{user.userName}"></h:outputText>
</p:column>
</p:dataTable>
的.java
@PostConstruct
public void init(){
// +getter , setter
userDataList = new LazyDataModel<UserDetail>(){
private static final long serialVersionUID = 1L;
@Override
public List<UserDetail> load(int first, int pageSize, String sortField,
SortOrder sortOrder, Map<String, String> filters) {
return lazyDataModelCom.getResultList(first, pageSize, sortField, sortOrder, filters);
}
};
}
getResultList
public List<UserDetail> getResultList(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
Session session = HibernateUtils.getsession();
Criteria criteria = session.createCriteria(UserDetail.class);
criteria.addOrder(Order.asc("id"));
for (Map.Entry<String, String> entry : filters.entrySet()) {
if (entry.getValue() != null) {
criteria.add(Restrictions.ilike("id",
"%" + entry.getValue() + "%")); }
}
criteria.setMaxResults(pageSize);
criteria.setFirstResult(first);
return criteria.list();
}
getResultList方法返回一個正確的值,我調試它。 我認為問題出在userDataList中 。
您的LazyDataModel
實現未設置rowCount。 你應該做的事情如下:
public void init(){
// +getter , setter
userDataList = new LazyDataModel<UserDetail>(){
private static final long serialVersionUID = 1L;
@Override
public List<UserDetail> load(int first, int pageSize, String sortField,
SortOrder sortOrder, Map<String, String> filters) {
userDataList.setRowCount(...);
return lazyDataModelCom.getResultList(first, pageSize, sortField, sortOrder, filters);
}
};
userDataList.setRowCount(...);
}
注意rowCount
是在分頁之前但在過濾之后的行數。
請參閱此答案,其中包含一個工作示例(唯一的區別是它使用JPA Criteria API而不是Hibernate Criteria):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.