0

私は調査を行いlazyload、dataTable に関する多くの問題を発見しましたが、私が抱えている問題を説明するものはありません。私は実際にこの問題を Primefaces Web サイトに投稿しましたが、回答がありませんでした。私の問題が愚かすぎるか、複雑すぎるかのどちらかです。

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"> 
4

3 に答える 3

2

loadLazyDataModel には 2 つのメソッドがあります。

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つ実装する必要があります(また、最初のものを実装するだけで十分であることを覚えています)。

于 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 に答える