Wicket-数据表自定义分页
我正在研究wicket datatable,它使用内置分页功能,数据通过dataprovider提供。Wicket NavigationToolbar用于显示用于导航datatable页面的链接,如下所示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;
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);
}
};