0

我进行了研究,发现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"> 
4

3 回答 3

2

loadLazyDataModel中有两种方法:

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.");
}

你还需要实现一个(另外,我记得实现第一个就足够了)。

于 2013-03-13T21:41:47.440 回答
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.");
}

您尝试覆盖的加载方法仅在您使用多重排序时

于 2014-11-29T13:32:31.303 回答
0

你试过这个: http: //forum.primefaces.org/viewtopic.php ?f=3&t=29946 ?它对我有用(除了我正在研究的选择功能)。

于 2013-07-18T14:11:43.423 回答