Wicket-数据表自定义分页

Wicket-数据表自定义分页,wicket,wicket-6,wicketstuff,Wicket,Wicket 6,Wicketstuff,我正在研究wicket datatable,它使用内置分页功能,数据通过dataprovider提供。Wicket NavigationToolbar用于显示用于导航datatable页面的链接,如下所示 public class AbstractDataTable<T, S> extends DataTable<T, S> { private static final long serialVersionUID = -3370089530205846951L;

我正在研究wicket datatable,它使用内置分页功能,数据通过dataprovider提供。Wicket NavigationToolbar用于显示用于导航datatable页面的链接,如下所示

public class AbstractDataTable<T, S> extends DataTable<T, S> {
    private static final long serialVersionUID = -3370089530205846951L;

    public AbstractDataTable(String id, List<? extends IColumn<T, S>> columns, ISortableDataProvider<T, S> dataProvider) {
        this(id, columns, dataProvider, DataTableConstants.DEFAULT_ELEMS_PER_PAGE);
    }

    public AbstractDataTable(String id, List<? extends IColumn<T, S>> columns, ISortableDataProvider<T, S> dataProvider,
            int elemsPerPage) {
        super(id, columns, dataProvider, elemsPerPage);      
        addToolbars(dataProvider);
    }
    
    protected void addToolbars(ISortableDataProvider<T, S> dataProvider) {
        addTopToolbar(new HeadersToolbar<S>(this, dataProvider));
        addBottomToolbar(new NavigationToolbar(this));
        addBottomToolbar(new NoRecordsToolbar(this));
    }   

数据提供程序的实现不正确。您必须重写IDataProvider的“迭代器”方法并在那里选择数据。此外,wicket LIB中不提供BaseProvider。下面是一个简单的例子:

IDataProvider<Location> provider = new IDataProvider<>() {
        @Override
        public Iterator<? extends Location> iterator(long first, long count) { 
            return getLocationDAO().findAll(first, count).iterator();
        }

        @Override
        public long size() {
            return getLocationDAO().getTotal();
        }

        @Override
        public IModel<Location> model(Location object) {
            return new Model<>(object);
        }
    };
IDataProvider提供程序=新的IDataProvider(){
@凌驾

公共迭代器请向我们展示您已经拥有的IDataProvider实现的代码。感谢martin对我的帮助。主描述中的更新代码我不知道BaseProvider来自何处,但您的泛型类参数似乎错误,应该是DataTableProviderSee以获取灵感
    @Override
    protected void onSubmit(SearchFilterBO criteria) {
        if (getLog().isDebugEnabled()) {
            getLog().debug(format(MSG_PTRN_SEARCH_SUBMISSION, ToStringBuilder.reflectionToString(criteria)));
        }
        getResultsProvider().update(searchService.searchBy(criteria));
        getLog().info(format(MSG_PTRN_SEARCH_ENDED, getResultsProvider().size()));
    }
IDataProvider<Location> provider = new IDataProvider<>() {
        @Override
        public Iterator<? extends Location> iterator(long first, long count) { 
            return getLocationDAO().findAll(first, count).iterator();
        }

        @Override
        public long size() {
            return getLocationDAO().getTotal();
        }

        @Override
        public IModel<Location> model(Location object) {
            return new Model<>(object);
        }
    };