2013-02-20 5 views
2

я получил 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>?

+0

Что такое 'CustomLazyDataModel'? Это какая-то ваша реализация? – partlov

+0

Согласно коду PrimeFaces, он выводит «Нет записи», когда ваш метод 'getRowCount()' возвращает 0. Вы боитесь, что вы установили 'rowCount'? – partlov

+0

Да, это моя реализация, и единственное, что она делает, это переопределить setRowIndex, как показано в этом комментарии http://code.google.com/p/primefaces/issues/detail?id=1544#c23 – DominikM

ответ

2

Единственное, что отсутствовало на компоненте, это параметр rows.

<p:dataTable var="account" value="#{customerBean.accounts}" id="accounts" lazy="true" rows="10" paginatorAlwaysVisible="false" > 

Теперь выполняются записи.

Смежные вопросы