【发布时间】:2013-02-05 07:31:45
【问题描述】:
我将 dataTable 定义为:
<p:dataTable var="account" value="#{customerBean.accounts}"
id="accounts" lazy="true">
<p:column>
<f:facet name="header">
<h:outputText value="#{msg['editCustomerForm.accountNumbers.header']}" />
</f:facet>
<h:outputText value="#{account.accountNumber}" />
</p:column>
</p:dataTable>
并在此方法中加载帐户(在@PostConstruct 方法中调用)
private void initAccounts() {
accounts = new CustomLazyDataModel<Account>() {
@Override
public List<Account> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
return accountService.getAccountsForCustomer(customerModel.getCustomer(), first, pageSize);
}
};
accounts.setPageSize(10);
}
CustomLazyDataModel 之所以存在只是因为这个错误:http://code.google.com/p/primefaces/issues/detail?id=1544(见评论 #23)
但是当页面被渲染时,组件说“没有找到记录。”
在服务器上执行的休眠日志中的 SQL 返回 1 行,当我使用 dataList 插入的 dataTable 结果是正确的(呈现 1 行)。
<p:dataList value="#{customerBean.accounts}" var="account"
id="accounts-old" rows="10"
type="none" lazy="true">
<f:facet name="header">
<h:outputText value="#{msg['editCustomerForm.accountNumbers.header']}" />
</f:facet>
<h:outputText value="#{account.accountNumber}" />
</p:dataList>
当使用<h:dataTable> 时,也有记录。那么<p:dataTable>有什么问题呢?
【问题讨论】:
-
什么是
CustomLazyDataModel?这是你的一些实现吗? -
根据 PrimeFaces 代码,当您的方法
getRowCount()返回 0 时,它会打印“No record found”。您是否对设置rowCount感到痛苦? -
是的,这是我的实现,它唯一做的就是覆盖 setRowIndex,如评论中所示 code.google.com/p/primefaces/issues/detail?id=1544#c23
-
好点。当我打电话给 accounts.setRowCount(count);消息“未找到记录”消失,但仍然没有呈现记录。
标签: java primefaces datatable