これは新しいコンポーネントであるため、安定していない可能性があります。
実際のデータ ソース (DB など) を使用して遅延読み込みでこのデータ スクローラーを実装できた人はいますか?
index.xhtml
<p:dataScroller value="#{postLoader.lazyModel}" var="post" lazy="true" chunkSize="5">
<article>
<h:outputText value="#{post.title}" />
<br />
<p:graphicImage value="/files/#{post.blobPath}" />
</article>
<hr />
</p:dataScroller>
PostLoaderバッキング
@ManagedBean(name = "postLoader")
@ViewScoped
public class PostLoaderBacking implements Serializable
{
// ==================== 1. Static Fields ==============================
private static final long serialVersionUID = 2732106678777694908L;
private static final int CHUNK_SIZE = 5;
// ==================== 2. Instance Fields ============================
@EJB
private PostEJB postEJB;
private int postCount;
private LazyDataModel<PostEntity> lazyModel;
// ==================== 4. Constructors ===============================
@PostConstruct
public void init()
{
postCount = postEJB.getPostCount();
lazyModel = new LazyDataModel<PostEntity>() {
private static final long serialVersionUID = -4742720028771554420L;
@Override public List<PostEntity> load(final int first, final int pageSize,
final String sortField, final SortOrder sortOrder,
final Map<String, Object> filters) {
final int startingFrom = postCount - first;
return postEJB.loadLatestPosts(startingFrom, CHUNK_SIZE);
}
};
}
// ==================== 7. Getters & Setters ======================
public LazyDataModel<PostEntity> getLazyModel()
{
return lazyModel;
}
}
私のソリューションは、ある程度まではうまく機能します。2 つのチャンクのみをロードします。たとえば、私のチャンク サイズが 2 の場合 (しゃれは意図されていません)、合計で 4 つの投稿が読み込まれますが、それらの投稿元はもっとたくさんあります。
ある時点でロードが停止するのはなぜですか? ページを下にスクロールしても何も起こりません。プライムフェイスの実装は、ロードするかどうかをどの基準で決定しますか?