私は調査を行い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">