JSF PrimeFaces DataScroller mit Lazy Loading und keine Paginierung (infinite-scroll)

Da es eine neue Komponente, die es möglicherweise nicht so stabil.

Hat jemand umsetzen konnte diese Daten scroller mit lazy loading mit einem eigentliche Datenquellen (z.B. 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>

PostLoaderBacking

@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;
    }

}

Meine Lösung funktioniert bis zu einem gewissen Punkt. Es nur lädt zwei Stücke. Zum Beispiel, wenn mein chunk-Größe ist 2 (kein Wortspiel beabsichtigt), dann wird es Last 4 Beiträge insgesamt, obwohl ich noch viel mehr, wo diese kamen.

Warum hört es laden irgendwann? Ich scroll unten auf der Seite und nichts passiert. Auf welche Kriterien muss die primefaces-Implementierung entscheiden, ob es laden soll?

  • Die Kriterien für das beladen ist rowcount/pagesize.
InformationsquelleAutor GGrec | 2014-05-25
Schreibe einen Kommentar