2015-12-08 65 views
0

日誌顯示我確實調用LazyDataModel.load()方法,但表中沒有顯示任何記錄。p:dataTable「找不到記錄」。而手動返回非空列表

<p:dataTable var="user" value="#{adminLazyBean.lazyDataModel}" 
      paginator="true" rows="10" rowsPerPageTemplate="5,10,15" 
      id="carTable" lazy="true" 
      paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}"> 

      <p:column headerText="Id" sortBy="#{user.id}" filterBy="#{user.id}"> 
       <h:outputText value="#{user.id}" /> 
      </p:column> 
      <p:column headerText="Name" sortBy="#{user.name}" 
       filterBy="#{user.name}"> 
       <h:outputText value="#{user.name}" /> 
      </p:column> 
      <p:column headerText="Username" sortBy="#{user.username}" 
       filterBy="#{user.username}"> 
       <h:outputText value="#{user.username}" /> 
      </p:column> 
      <p:column headerText="Phonenumber" sortBy="#{user.phoneNumber}" 
       filterBy="#{user.phoneNumber}"> 
       <h:outputText value="#{user.phoneNumber}" /> 
      </p:column> 
     </p:dataTable> 

這是我的加載方法。

@Override 
    public List<UserDTO> load(int first, int pageSize, String sortField, SortOrder sortOrder, 
      Map<String, Object> filters) { 
     Logger log = Logger.getLogger(LazyAdmin.class.getName()); 
     log.debug("LOAD CALLED"); 
     UserDTO u = new UserDTO(); 
     u.setName("DUMMY"); 
     List<UserDTO> list = new ArrayList<>(); 
     list.add(u); 
     return list; 
     } 
} 

正如你所看到的,我返回一個名爲DUMMY的元素的列表。 我認爲這應該工作。我做了至少5次遍歷示例代碼,找不到任何東西。

+0

您是否將'LazyDataModel '的實例存儲到託管bean AdminLazyBean中?如果不是,那麼只需在''中執行'value =「#{adminLazyBean}」''。 – Tiny

+0

是的,我做到了。並且它被初始化爲PostCunstruct,並且這個bean是ViewScoped –

+0

你確實使用匿名類嗎?因此,託管bean類本身不會像'public class AdminLazyBean extends LazyDataModel implements Serializable {...}'一樣擴展'LazyDataModel '。 – Tiny

回答

0

lazyDataModel.setRowCount(2);解決了這個問題。