【问题标题】:p:dataTable "No records found." while a non empty list is manually returnedp:dataTable "没有找到记录。"而手动返回一个非空列表
【发布时间】:2016-03-13 21:28:51
【问题描述】:

日志显示我确实调用了 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;
         }
}

如您所见,我返回一个列表,其中包含一个名为 DUMMY 的元素。 我认为这应该有效。我至少运行了 5 次示例代码,但找不到任何东西。

【问题讨论】:

  • 您是否将LazyDataModel&lt;T&gt; 的实例存储到托管bean AdminLazyBean 中?如果没有,那么只需在&lt;p:dataTable&gt; 中执行value="#{adminLazyBean}"
  • 是的,我做到了。它被初始化 PostCunstruct 并且 bean 是 ViewScoped
  • 你确定使用匿名类吗?因此,托管 bean 类本身不会像 public class AdminLazyBean extends LazyDataModel&lt;UserDTO&gt; implements Serializable {...} 那样扩展 LazyDataModel&lt;T&gt;
  • 人们可能会认为我在抱怨,但从现在开始我不会再问@Tiny 提出的问题了。只需指向 minimal reproducible examplestackoverflow.com/tags/jsf/info 并发布版本信息并与 PrimeFaces 展示进行比较(提示:设置行数)
  • @Kukeltje 下次会更具体。谢谢你的提示。一个小时前我已经尝试过了,但我发现还有另一个问题,忘记再次使用这个解决方案。

标签: jsf primefaces datatable lazy-loading


【解决方案1】:

lazyDataModel.setRowCount(2); 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2015-09-22
    • 2011-12-27
    • 2016-10-17
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多