p:dataTable "No records found." 而手动返回非空列表
p:dataTable "No records found." while a non empty list is manually returned
日志显示我确实调用了 LazyDataModel.load() 方法,但表格显示没有记录。
<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;
}
}
如您所见,我 return 包含一个名为 DUMMY 的元素的列表。
我认为这应该有效。我通过示例代码至少做了 5 次 运行,但找不到任何东西。
lazyDataModel.setRowCount(2);
解决了问题。
日志显示我确实调用了 LazyDataModel.load() 方法,但表格显示没有记录。
<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;
}
}
如您所见,我 return 包含一个名为 DUMMY 的元素的列表。 我认为这应该有效。我通过示例代码至少做了 5 次 运行,但找不到任何东西。
lazyDataModel.setRowCount(2);
解决了问题。