JSF datatable com paginação sob demanda [RESOLVIDO]

Olá, alguém alguma vez já conseguiu fazer isso? Procurei e procurei e não descubro com fazer isso no jsf. O componente do promefaces faz a paginação mas antes ele carrega todos os registros em um DataModel então exibe e com um grande volume de registros isso é meio demorado. Por isso eu precisava fazer esse esquema de paginação mas simplesmente não sei como implementar, por exemplo como eu pego a próxima página? O JSF podia ser mais prático nesse ponto. Tentei também o lazy load do primefaces mas não funciona muito bem. se alguém já fez isso pode me dar uma luz?

Olá,

Minha experiência com o Primefaces 2.2.1 e Lazy Loading foi boa com JPA.  Encontrei um erro no cálculo do número de elementos, mas do resto, tudo funcionou (ordenação e filtragem).   Tente o seguinte código: http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=4224 

O código que corrige a contagem é uma pequena variação desse, mas não tenho o mesmo agora.

Marco A M.

Já tinha visto isso, resolvi implementar a paginação na mão mesmo, ficou algo como:

 private Integer first = 1;
 private Integer row = 10;

public Integer getTotal() throws Exception{
        List l = HibernateFactory.openSession().createQuery("SELECT COUNT(e) FROM Estagiario e").list();
        Integer total = new Integer(l.get(0).toString());
        return total;
    }
    
    public Integer getLastItem() throws Exception{
        int count = first + (row-1);
        if(count > getTotal()){
            count = getTotal();
        }
        return count;
    }
    
    public String proxima() throws Exception{
        first += row;
        
        if(first > getTotal())            
        first -= row; 
     
        return "list";
    }
    
    public String anterior(){
        first -=row;
        if(first < 0){
            first = 1;
        }
        return "list";
    }
    
    public String primeiro(){
        first = 1;
        return "list";
    }
    
    public String ultima() throws Exception{
        int tot = getTotal()/row;
        int ret = getTotal()%row;
        if(ret > 5){
            tot+=1;
        }        
        first += row * tot;
        
        if(first > getTotal())
            first -= row * tot;
        
        return "list";
    }

e no xhtml

 <h:commandLink action="#{estagiarioBean.primeiro}" value="Primeiro"/>
                <h:commandLink action="#{estagiarioBean.previous}" value="Anterior"/>
                <h:outputText value="Exibindo registros #{estagiarioBean.first} a #{estagiarioBean.lastItem} de #{estagiarioBean.total}"/>
                <h:commandLink action="#{estagiarioBean.next}" value="Próximo"/>
                <h:commandLink action="#{estagiarioBean.ultima}" value="Última"/>

:lol:

E eu carrego a minha ListDataModel com um metodo implementando criteria e usando first e row como limites, não é bonito mas funciona…

:roll: :roll: