【问题标题】:Use PrimeFaces Lazyloading In Datatable在数据表中使用 PrimeFaces 延迟加载
【发布时间】:2016-11-02 05:37:35
【问题描述】:

我使用 Hibernate 从数据库中获取数据。我在程序的数据表中显示数据 现在我必须通过延迟加载 Primefaces 数据表来显示数据

我不知道应该如何更改我的代码。我在网上搜索,反正我没有找到。 (我想要在 Datatable 中显示延迟加载的 List testList)

XHTML 文件:

<p:dataTable var="test" value="#{testMB.testList}" id="testTable"width="100%" liveResize="true">

ManagedBean 文件

private List<TestDTO> testList = new ArrayList<TestDTO>();
public List<TestDTO> getTestList() {
    return logList;
}
public void setTestList(final List<TestDTO> pTestList) {
    testist = pTestList;
}

TestDTO 类

public class TestDTO implements Serializable {

    private static final long serialVersionUID = XXXXXXXXXXXXXXL;

    private String XXXXXXXX;
    private Date XXXXXXXX;
    private String XXXXXXXX;
    private Long XXXXXXXX;
    private Long XXXXXXXX;
    private Long XXXXXXXX;
    private String XXXXXXXX;
    private String XXXXXXXX;
    ........

【问题讨论】:

    标签: java mysql hibernate datatable lazy-loading


    【解决方案1】:

    您必须实现延迟加载的 LazyDataModel 类,而不是使用普通的 ArrayList,并且您应该在数据表中将 lazy 设置为 true。

    <p:dataTable var="test" value="#{testMB.testList}" id="testTable"width="100%" liveResize="true" lazy="true">
    

    您可以考虑打开分页器,因为它可以达到延迟加载的目的。

    更多信息:http://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml

    LazyDataModel 类的示例。

    class LazyTestDataModel extends LazyDataModel<TestDTO> implements Serializable {
        private static final long serialVersionUID = 1L;
    
        @Override
        public List<TestDTO> load(int first, int pageSize, String sortField, SortOrder sortOrder,
                Map<String, Object> filters) {
            try {
    
                Map<String, Object> params = PrimefacesBeanUtils.populatePaginationMap(first, pageSize, sortField, sortOrder, filters);
    
                setRowCount(testService.getListCount(params));
    
                if (getRowCount() > 0) {
                    return testService.getList(params);
                }
    
            } catch (Throwable t) {
                errorResult(t);
            }
    
            return null;
        }
    }
    

    【讨论】:

    • 谢谢您的回答
    • 谢谢你的回答。我读了primefaces.org/showcase/ui/data/datatable/lazy.xhtml 但是我不明白。你能告诉我我在 LazyDataModel 类中写了什么。如何在 ArrayList 中使用 testList 以及如何使用和将 ArrayList 连接到数据表中/与数据表连接。谢谢。我希望你能帮助 mir
    • 拥有 LazyDataModel 类的目的是当您希望在数据表中拥有 LazyLoading。它实际上很容易实现。我已经添加了 LazyDataModel 类的示例代码。
    • 基本上通过添加 value="#{testMB.testList}",您已将 ArrayList 附加到数据表。
    • 谢谢迪伦。我现在明白了。谢谢
    猜你喜欢
    • 2013-01-09
    • 2013-06-17
    • 2014-01-19
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2014-04-10
    相关资源
    最近更新 更多