я получил DataTable определяется как:PrimeFaces 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 является corect (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'? Это какая-то ваша реализация? – partlov
Согласно коду PrimeFaces, он выводит «Нет записи», когда ваш метод 'getRowCount()' возвращает 0. Вы боитесь, что вы установили 'rowCount'? – partlov
Да, это моя реализация, и единственное, что она делает, это переопределить setRowIndex, как показано в этом комментарии http://code.google.com/p/primefaces/issues/detail?id=1544#c23 – DominikM