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: