Ajax 分页检票口。单击下一页时从数据库中检索新数据

Ajax Pagination Wicket. Retrieve new data from db when next page is clicked

我想对结果进行分页。首先,我尝试了经典方法并且它起作用了,我的 dataView 从数据库中检索包含结果的列表,并显示每页我想要的结果数。 (看起来像这样 << <1 2 3 4 5> >> )

final DataView<RequestEntity> dataView = new MyDataView();
dataView.setItemsPerPage(10);

linksContainer.add(new PagingNavigator("pageNavigator", dataView));

<a wicket:id="pageNavigator"></a>

现在我只想在单击下一页时从数据库中检索数据(一种延迟加载/延迟分页)。所以我像这样修改了我的 DAOObject: query.setMaxResults(entriesPerPage);

这是与之前相同的查询,但这次它将采用我想要的每页结果量。 它有效,它每页检索尽可能多的条目。问题是我不知道如何显示另一个页面。它只显示一个页面,其中包含查询中的第一个条目。 (看起来像这样 << 1 >>)

我的想法是使用 links 而不是 AjaxPagingNavigator 来显示从 1 到 5 的页面,当单击 link 时执行查询。我不认为我的想法是好的。你能帮助我吗?我希望我的问题不是太愚蠢。 谢谢

完成!我需要做的就是创建无所不知的 IDataProvider。如果您创建它,则无需担心大小(关于欺骗它以显示更多页面)。

IDataProvider dataProvider = new IDataProvider<RequestEntity>() {
    RequestEntityDAOExtra requestEntityDAOExtra =
            ((MyApp) getApplication()).getMyRequestDAO();
    @Override
    public Iterator<? extends RequestEntity> iterator(long first, long count) {
        List<RequestEntity> entitiesByDomainList = requestEntityDAOExtra.getEntityByDomain(
                domainInput.getModelObject(), (int) count, (int) first);
        return entitiesByDomainList.iterator();
    }

    @Override
    public long size() {
        return requestEntityDAOExtra.getEntityByDomainCount(domainInput.getModelObject());
    }

    @Override
    public IModel<RequestEntity> model(final RequestEntity requestEntity) {
        return new LoadableDetachableModel() {
            @Override
            protected RequestEntity load() {
                return requestEntity;
            }
        };
    }

    @Override
    public void detach() {

    }
};


final DataView<RequestEntity> dataView = new MyDataView(dataProvider, 10);

private class MyDataView extends DataView<RequestEntity> {
    public MyDataView(IDataProvider dataProvider, int i) {
        super("linksList", dataProvider, i);
    }

    @Override
    protected void populateItem(final Item<RequestEntity> item) {
        .....
    }
}