我做了我的研究,發現lazyload
和dataTable有很多問題,但沒有一個解釋我遇到的問題。我實際上已經在Primefaces網站上發佈了這個問題,但沒有得到答案。要麼我的問題太愚蠢,要麼太複雜。Primefaces Lazyload + datatable + lazyDataModel
我們將我們的primefaces庫從3.1.1更新到3.5,並且我們的LazyLoad
數據錶停止工作。基本上DataModel已經改變了,所以我實現了一個基於Primefaces Showcase場景的新模型。
The error is: java.lang.UnsupportedOperationException: Lazy loading is not implemented.
這個東西是由類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">
你好,TY爲你解答。如果你看到第一個代碼,我已經實現了load方法,並且如果你檢查primefaces showcase的例子,他們也只實現了一個加載方法。 – user2165181 2013-03-13 21:56:23
你是說我有義務實施兩種加載方法? – user2165181 2013-03-13 21:56:54
對於我的項目(與3.5)只能加載(int first,int pageSize,String sortField,SortOrder sortOrder,Map filters)實現(與您的代碼示例中不一樣) –
2013-03-13 21:57:53