Jsf omnifaces是否具有分页相关组件?

Jsf omnifaces是否具有分页相关组件?,jsf,pagination,omnifaces,Jsf,Pagination,Omnifaces,我在omnifaces的showcase中搜索了任何有助于JSF(datatable)真正分页的组件,但没有成功 你们知道有没有 这将是一个伟大的功能 我在这里做了一点工作,并附带了下面的代码 它非常通用,可以与任何JSF组件库或持久性API一起使用 开发人员必须在JSF托管bean(backingbean)中实现惰性列表,该bean可以访问业务门面或实体管理器来执行查询 import java.util.AbstractList; import java.util.HashMap; impor

我在omnifaces的showcase中搜索了任何有助于JSF(datatable)真正分页的组件,但没有成功

你们知道有没有

这将是一个伟大的功能

我在这里做了一点工作,并附带了下面的代码

它非常通用,可以与任何JSF组件库或持久性API一起使用

开发人员必须在JSF托管bean(backingbean)中实现惰性列表,该bean可以访问业务门面或实体管理器来执行查询

import java.util.AbstractList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public abstract class AbstractLazyList extends AbstractList {

/**
 * Current page cache.
 */
private final Map<Integer, Object> currentPage = new HashMap<Integer, Object>();

/**
 * Page size. Default 50.
 */
private int pageSize = 50;

public void setPageSize(int pageSize) {
    this.pageSize = pageSize;
}

@Override
public Object get(int index) {
    if (currentPage.containsKey(index)) {
        return currentPage.get(index);
    }

    queryNewPage(index);

    return currentPage.get(index);
}

/**
 * Clears cache and queries new page's itens.
 * 
 * @param firstItemIndex
 *            first item index
 */
private void queryNewPage(int firstItemIndex) {
    currentPage.clear();
    final List<Object> pageResults = queryNextPage(firstItemIndex, pageSize);
    for (int j = 0; j < pageResults.size(); j++) {
        currentPage.put(firstItemIndex + j, pageResults.get(j));
    }
}

@Override
public int size() {
    return queryResultsSize();
}

/**
 * Queries next page itens.
 * 
 * @param firstRowIndex
 *            first row index
 * @param pageSize
 *            maximum resuts of the query
 * @return list of results
 */
protected abstract List<Object> queryNextPage(int firstRowIndex,
        int pageSize);

/**
 * Counts the total results of the query.
 * 
 * @return query's total results
 */
protected abstract int queryResultsSize();
}
}
import java.util.AbstractList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
公共抽象类AbstractLazyList扩展了AbstractList{
/**
*当前页缓存。
*/
私有最终映射currentPage=新HashMap();
/**
*页面大小。默认为50。
*/
私有int pageSize=50;
公共void setPageSize(int pageSize){
this.pageSize=页面大小;
}
@凌驾
公共对象get(int索引){
如果(当前页面包含索引)){
返回currentPage.get(索引);
}
查询网页(索引);
返回currentPage.get(索引);
}
/**
*清除缓存并查询新页的ITEN。
* 
*@param firstItemIndex
*第一项索引
*/
私有void queryNewPage(int firstItemIndex){
currentPage.clear();
最终列表pageResults=queryNextPage(firstItemIndex,pageSize);
对于(int j=0;j

也许像这样的一种方法可以应用于omnifaces。

omnifaces并不是面向视觉的UI组件,而是面向“幕后”工作的实用程序,可以与任何其他JSF组件库结合使用

考虑查看面向视觉的UI组件库,如PrimeFaces和RichFaces。它们提供具有分页可能性的数据表组件


我在考虑一个更通用的解决方案来解决真正的分页问题。更具体地说,我在考虑懒人列表。我更新了这个问题,以便更清楚地了解我对懒人列表的含义。