Lazydatamodel NotSerializableException sublist



我使用primefaces教程实现了LazyDataModel并面对问题。

如果我返回 list.sublist(...(- 一切正常,但我得到异常:

java.io.NotSerializableException: java.util.ArrayList$SubList.

我发现由subList((方法返回的列表是"RandomAccessSubList"的实例,它是不可序列化的。我试图创建新的列表。

如果我返回新的 ArrayList(list.sublist(...(( - 异常消失,但load((方法没有被调用,我无法获取下一个元素块。

有没有办法摆脱这个烦人的异常?

更新:

public class LazyApartmentDataModel extends LazyDataModel<MyEntity> implements Serializable{
private EntityManager em;
private String queryText;
private SearchCriteria searchCriteria;
public LazyApartmentDataModel() {}
public LazyApartmentDataModel(EntityManager em, SearchCriteria searchCriteria, int totalSize) {
this.em = em;
prepareQueryText(searchCriteria);
this.searchCriteria = searchCriteria;
this.setRowCount(totalSize);
}
private void prepareQueryForGrid(SearchCriteria searchCriteria) {
StringBuilder query = new StringBuilder("select ... from ... where ... ");
this.queryText = query.toString();
}
@Override
public List<MyEntity> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
List<MyEntity> list;
Query q = em.createQuery(this.queryText);
// Paginate
q.setFirstResult(first); 
q.setMaxResults(pageSize); 
list = query.getResultList();
return list.subList(0,list.size());
}
}

好的,我发现了问题。Primefaces的一个JS文件丢失了。

相关内容

  • 没有找到相关文章

最新更新