Primefaces Lazyload+;数据表+;懒散数据模型
我做了研究,发现了很多关于Primefaces Lazyload+;数据表+;懒散数据模型,primefaces,datatable,Primefaces,Datatable,我做了研究,发现了很多关于lazyload和dataTable的问题,但没有一个能解释我的问题。事实上,我已经在Primefaces网站上发布了这个问题,但没有得到任何答案。不是我的问题太愚蠢就是太复杂 我们将primefaces库从3.1.1更新到3.5,我们的LazyLoaddatatables停止工作。基本上,数据模型已经改变了,所以我基于Primefaces Showcase场景实现了一个新的数据模型 错误是:java.lang.UnsupportedOperationException
lazyload
和dataTable的问题,但没有一个能解释我的问题。事实上,我已经在Primefaces网站上发布了这个问题,但没有得到任何答案。不是我的问题太愚蠢就是太复杂
我们将primefaces库从3.1.1更新到3.5,我们的LazyLoad
datatables停止工作。基本上,数据模型已经改变了,所以我基于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());
}}
公共类LazymethodataModel\u新扩展LazyDataModel{
@凌驾
公共列表加载(int-first、int-pageSize、列表多端口元、映射筛选器){
generic.setRow(第一);
generic.setPage(页面大小);
List objts=(List)Reflection.getObjectByInvokeMethod(crud,方法,泛型);
返回objts;
}
公共LazyMethodDataModel_new(CrudFacade crud、字符串方法、字符串方法计数、GenericModel generic){
this.crud=crud;
this.generic=generic;
这个方法=方法;
size=(整数)Reflection.getObjectByInvokeMethod(crud、methodCount、generic);
setRowCount(大小);
}
@凌驾
公共void setRowIndex(int-rowIndex){
/*
*在祖先(LazyDataModel)中有以下内容:
*this.rowIndex=rowIndex=-1?rowIndex:(rowIndex%pageSize);
*/
如果(rowIndex=-1 | | getPageSize()==0){
super.setRowIndex(-1);
}
其他的
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">
LazyDataModel中有两种
加载方法:
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.");
}
公共列表加载(int-first、int-pageSize、字符串排序字段、排序器排序器、映射过滤器){
抛出新的UnsupportedOperationException(“未实现延迟加载”);
}
公共列表加载(int-first、int-pageSize、列表多端口元、映射过滤器){
抛出新的UnsupportedOperationException(“未实现延迟加载”);
}
您还需要实现一个(我记得,实现第一个就足够了)。LazyDataModel中有两个load
方法:
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.");
}
公共列表加载(int-first、int-pageSize、字符串排序字段、排序器排序器、映射过滤器){
抛出新的UnsupportedOperationException(“未实现延迟加载”);
}
公共列表加载(int-first、int-pageSize、列表多端口元、映射过滤器){
抛出新的UnsupportedOperationException(“未实现延迟加载”);
}
您还需要实现一个(我记得,实现第一个就足够了)。您尝试过这个吗:?它对我有效(我正在使用的选择功能除外)。你试过这个吗:?它对我有效(我正在处理的选择功能除外)。如果没有启用多重排序,则必须覆盖其他加载方法
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
throw new UnsupportedOperationException("Lazy loading is not implemented.");
}
公共列表加载(int-first、int-pageSize、字符串排序字段、排序器排序器、映射过滤器){
抛出新的UnsupportedOperationException(“未实现延迟加载”);
}
只有在使用多排序时,才尝试覆盖加载方法。如果未启用多排序,则必须覆盖其他加载方法
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
throw new UnsupportedOperationException("Lazy loading is not implemented.");
}
公共列表加载(int-first、int-pageSize、字符串排序字段、排序器排序器、映射过滤器){
抛出新的UnsupportedOperationException(“未实现延迟加载”);
}
仅当您使用多排序时,才尝试覆盖加载方法。Hello,ty for your answer。如果您看到第一个代码,我已经实现了load方法,如果您检查primefaces showcase示例,他们也只实现了一个load方法。您是说我有义务实现两个load方法吗?对于我的项目(使用3.5),只实现了load(int first,int pageSize,String sortField,SortOrder,Map filters)(与代码示例中的不同)嗯,我明白了,我想我实现了错误的一个。我要尝试实现另一个,看看!tyvm!嘿,我实现了你说的那个方法,它成功了!它调用了load方法,但paginator不起作用。在文档中,它说每次用户按下分页按钮,datagrid都应该调用load方法,但那不是发生了!有什么想法吗?您好,请回答。如果您看到第一个代码,我已经实现了加载方法,并且如果您检查primefaces showcase示例,他们也只实现了一个加载方法。您是说我有义务实现两个加载方法吗?对于我的项目(3.5版),只实现加载(int first、int pageSize、String sortField、SortOrder SortOrder、Map filters)已实现(与代码示例中的不同)嗯,我明白了,我想我实现了错误的一个。我要尝试实现另一个,看看!tyvm!嘿,我实现了你说的那个方法,它成功了!它调用了load方法,但paginator不起作用。在文档中,它说每次用户按下分页按钮,datagrid都应该调用load方法,但那不是没发生!有什么想法吗?