我做了我的研究,发现了lazyload
和dataTable的许多问题,但没有一个解释我遇到的问题。我实际上已经在Primefaces网站上发布了这个问题并且没有得到答案。我的问题太愚蠢或太复杂。
我们将我们的primefaces库从3.1.1更新到3.5,我们的LazyLoad
数据表停止工作。基本上DataModel已经改变,所以我基于Primefaces Showcase场景实现了一个新的。
错误是:java.lang.UnsupportedOperationException:延迟加载是 没有实施。
事情就是它由类LazyMethodDataModel
实现,如下所示。
当我调试时,会调用构造函数,但在调用load方法之前会抛出错误。
有什么想法?先感谢您。如果您需要更多信息,请告诉我。
public class LazyMethodDataModel_new extends LazyDataModel<Produto> {
@Override
public List<Produto> load(int first, int pageSize, List multiSortMeta, Map filters) {
generic.setRow(first);
generic.setPage(pageSize);
List objts = (List) Reflection.getObjectByInvokeMethod(crud, method, generic);
return objts;
}
public LazyMethodDataModel_new(CrudFacade crud,String method,String methodCount,GenericModel<?> generic) {
this.crud = crud;
this.generic = generic;
this.method = method;
size = (Integer) Reflection.getObjectByInvokeMethod(crud, methodCount, generic);
setRowCount(size);
}
@Override
public void setRowIndex(int rowIndex) {
/*
* The following is in ancestor (LazyDataModel):
* this.rowIndex = rowIndex == -1 ? rowIndex : (rowIndex % pageSize);
*/
if (rowIndex == -1 || getPageSize() == 0) {
super.setRowIndex(-1);
}
else
super.setRowIndex(rowIndex % getPageSize());
}}
前端
<p:dataTable id="listProduto" var="model" value="#{adminProdutoBean.lazyDataModel}"
paginator="true" rows="10"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
rowsPerPageTemplate="5,10,15" lazy="true">
答案 0 :(得分:2)
LazyDataModel中有两个load
方法:
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
throw new UnsupportedOperationException("Lazy loading is not implemented.");
}
public List<T> load(int first, int pageSize, List<SortMeta> multiSortMeta, Map<String,String> filters) {
throw new UnsupportedOperationException("Lazy loading is not implemented.");
}
你还需要实现一个(同样,我记得它足以实现第一个)。
答案 1 :(得分:1)
如果您没有启用多重排序,则必须覆盖其他加载方法。
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
throw new UnsupportedOperationException("Lazy loading is not implemented.");
}
您尝试覆盖的加载方法仅在您使用多分类
时才会被覆盖答案 2 :(得分:0)
你试过这个:http://forum.primefaces.org/viewtopic.php?f=3&t=29946?它对我有用(除了我正在研究的选择功能)。