2015-12-08 51 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);解决了这个问题。