1

JSF(データテーブル)の実際のページネーションに役立つコンポーネントを探すために、オムニフェイスのショーケースを検索しましたが、成功しませんでした。

あるのか知っていますか?

それは素晴らしい機能です。

https://rogerkeays.com/blog/paging-large-data-sets-with-a-lazylistで取ったアプローチに少し取り組み、以下のコードを用意しました。

これは非常に汎用的で、任意の JSF コンポーネント ライブラリまたは永続化 API で使用できます。

開発者は、クエリを実行するためにビジネス ファサードまたはエンティティ マネージャにアクセスできる JSF マネージド Bean (バッキング 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();
}
}

たぶん、このようなアプローチはオムニフェイスに適合する可能性があります.

4

1 に答える 1

2

OmniFaces は、ビジュアル指向の UI コンポーネント向けではなく、「舞台裏」で機能し、他の JSF コンポーネント ライブラリと組み合わせて使用​​できるユーティリティ向けです。

PrimeFaces や RichFaces などのビジュアル指向の UI コンポーネント ライブラリを検討することを検討してください。ページネーションが可能なデータ テーブル コンポーネントを提供します。

于 2012-07-26T17:17:57.653 に答える