JSF PrimeFaces与后端分页



也许有点奇怪,但是我不知道如何将PrimeFaces的分页带到我的后端。我知道这里有展示柜,这里有多个答案,但是我质疑它是否确实必须这样。此外,我的项目不是用dao和事物结构的,这使我陷入了黑暗。

我使用Spring Boot配置。整个项目的基础是教程https://dzone.com/articles/developing-jsf-applications-with-spring-boot

,但是现在它更大,拥有一个真实的数据库和此类内容。我已经实施了一个搜索,其中使用规格查找对象。在那里,我也可以给搜索一个可打开的对象。

在我的脑海中,我认为我可以为正常显示数据表做一个可打开的对象,并以某种方式将其连接到PrimeFaces的按钮。

因为我用

将数据直接加载到视图的控制器中
public void loadData() {
        eintraege = telefonbuchRepository.findAll();
}

所以我不知道如何在此处使用懒惰的加载过程。如果我错了,请教我,如果其他地方已经是答案。

我解决了它。所以我刚刚实施了lazydatamodel

public class TelefonbuchListController extends LazyDataModel<Telefonbuch> {
    private LazyDataModel<Telefonbuch> lazyModel;
    private static final long serialVersionUID = 1L;
    private int pageSize = 5;
    public void loadData() {
        lazyModel = new LazyDataModel<Telefonbuch>() {
            private static final long serialVersionUID = 1L;
            @Override
            public List<Telefonbuch> load(int first, int pageSize, String sortField, SortOrder sortOrder,
                    Map<String, Object> filters) {
                List<Telefonbuch> result = new ArrayList<Telefonbuch>();
                if (first == 0) {
                    result = telefonbuchRepository.findAll(PageRequest.of(first, pageSize)).getContent();
                } else {
                    first = first / pageSize;
                    result = telefonbuchRepository.findAll(PageRequest.of(first, pageSize)).getContent();
                }
                return result;
            }
        };
        lazyModel.setRowCount((int) telefonbuchRepository.count());
        lazyModel.setPageSize(pageSize);
    }

您应该像lowsperpagetemplate一样选择int pageize。因为我正在使用Jparepository,所以我想利用规格和可触摸对象的机会。可触摸对象的形式是 PageRequest.of(int page, int size)

因此,我需要获取Pagenumber,而不是此页面的第一个。只是一个简单的IF语句帮助我决定是否是第一页。我得到了带有first / pageSize的pagenumber。

不要忘记LazyDataModelpageSize的GETETER和固定器。

我的.xhtml数据表看起来像:

<p:dataTable id="table" var="telefonbuch" lazy="true" widgetVar="tableWv" value="#{telefonbuchList.lazyModel}" style="margin-bottom:20px" paginator="true" rows="#{telefonbuchList.pageSize}" dynamic="true" 
                paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink} {Exporters}"
                rowsPerPageTemplate="5,8,10">

最新更新