我进行了研究,发现lazyload
和 dataTable 存在许多问题,但没有一个解释我遇到的问题。我实际上已经在 Primefaces 网站上发布了这个问题,但没有得到任何答案。我的问题要么太愚蠢,要么太复杂。
我们将 primefaces 库从 3.1.1 更新到 3.5,我们的数据表LazyLoad
停止工作。基本上 DataModel 已经改变了,所以我基于 Primefaces Showcase 场景实现了一个新的。
错误是:java.lang.UnsupportedOperationException:未实现延迟加载。
问题是它是由类实现的,LazyMethodDataModel
如下面的代码所示。当我调试时,调用了构造函数,但在调用加载方法之前抛出了错误。
有什么想法吗?先感谢您。如果您需要更多信息,请告诉我。
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">