vc retorna uma lista da sua classe DAO e passa via request para o JSP a taglib se vira e monta, e vc define o número de páginas exibidas e além disso ela exporta automaticamente para pdf, xls, csv, rtf.
Pedrosa
No caso de grandes resultados vc precisa fazer alguns ajustes nela, pois ela carrega tudo de uma vez.
M
marceloplis
A melhor opção seria vc fazer no BD, pois a quantidade retornada seria dividida e não tudo numa pancada, pois assim fica mais lento, já paginando no BD fica mais rápido.
Cara, acho que vc deveria ajustar o seu design para fazer a paginação no banco de dados.
Como já disseram, taglibs e outros componentes só paginam depois que todo o resultado já foi retornado.
Eu usava um esquema assim em consultas grandes:
select top 10 * from tabela where id not in(select top 10 tabela.id from tabela)
Ou seja, busque os 10 primeiros registros da tabela “tabela” que não estejam entre os 10 primeiros registros da tabela “tabela”.
daí, para as demais pgs, é só mudar o segundo 10 para 20, 30, 40, 50…
Abraço.
marciobarroso
O melhor a ser feito é a paginação no banco, passando 1 atributo para controle dos registros …
SQL :
int indice = 1;
int qtdeRegistros = 10;
SELECT
campos
FROM
(
SELECT
campos,
rownum n
FROM (
SELECT
campos
FROM
tabela
)
)
WHERE
n BETWEEN indice AND indice + qtdeRegistros
Hibernate :
intinicio=1;intregistros=10;Stringsql="Select campos from tabela where campo = campo";Queryq=session.createQuery(sql);q.setFirstResult(inicio);q.setMaxResults(registros);Collectionresultado=q.list();
Você só precisará criar uma rotina para gerar a qtde de páginas usando a qtde de registros / registros por página e printar os números de páginas com um link passando o indice que será usado pelo select para o java.
falando assim parece easy, mas deu um trabalho implementar isso.
Se quiser, posso te passar o que eu tenho .
Abraço
Z
ZehOliveira
Depende muito.
Se você sabe que o usuário vai querer ver todas as páginas, é melhor trazer logo tudo e paginar na view. Poupa o trabalho do banco de dados, principalmente se for uma consulta muito pesada (lembrando que consulta pesada != consulta que retorna muitos dados).
Mas, por outro lado, se o cara provavelmente só vai querer ver a primeira página, é melhor paginar logo na consulta.
Analise caso a caso, não há uma solução tamanho único para tudo. O Google, por exemplo, sabe que ninguem vai querer ver a página 87.565 de uma busca, daí ele nem se preocupa em procurar isso, ele só traz as primeiras páginas, sabendo que todo mundo vai parar por ali.
Ironlynx
Fala Pedrosa, resolvi me arriscar com a displaytag!Meu sistema é simples, o usuário se loga no sistema, navega/consulta/insere itens.
Eu tô querendo que na hora que ele faça uma dada pesquisa, retornem 50 resultados(linhas) por página.São ramos de seguro como os abaixo:
O atributo que eu quiser mostrar (na verdade o conjunto de Ramos de Seguros cadastrados), eu tenho que pôr ele na sessão?
fredbh
Tudo bem pessoal, tbm estou com essa duvida… mas gostaria de usar as facilidades oferecidas pelo displaytag…
O problema eh q meu sistema ira retorna quantidades enormes de dados… e o mesmo precisa ser rapido… por eh um sistema basicamente de consulta… com muitos usuarios…
O displaytag ira carregar tudo na memoria e pagina a partir da memoria ?
Quais ajustes devo fazer para q o displaytag pagine via BD ?
Alguma soluçao de cache q posso utilizar ?
Tirando a paginaçao manual… qual outro metodo recomendam para um sistema q eh basicamente buscas… com muitos usuarios( aprox: 100/seg), buscando obj complexos(com relacionamentos). Alguma sugestao ?
Desde ja agradeço
valewww
Pedrosa
Ironlynx, sim jogue o resultado na sessão na primeira vez e crie uma ação de paginar na propriedade requestURI, nessa ação os dados já estarão na sessão, a taglib se vira e monta, não precisando conectar novamente no banco.
E o name deve ser o nome que vc atribuiu na sessão, ou seja vc carregou as informações na primeira vez e agora navega com esses dados na sessão.
romuloff
Desenterrando …
Pois gostaria de discutir se displaytag ainda é uma boa opção para paginar e implementar ajax em cima dele pra paginar/ordenar (e tambem se ele ainda é uma boa opção mesmo sem essa necessidade). Pra isso conheço uma solução integrando o displaytag com ajaxtags. Tem + alguma ?
Ou se pra facilitar isso estariam utilizando frameworks javascript/json (jquery, extJS, etc) ?
Eaí, como está o cenário atualmente ?