Basicamente, você passa uma lista para ela e a mesma se vira e monta, indepedente se vem de um txt, xml, tabela do bd x y ou z.
1 - Crie uma classe que conecte com o Sql Server, dica use o driver jtds.
2 - Crie sua classe modelo.
3 - Crie sua classe DAO, que contenha o método que retorna uma lista.
4 - Passe essa lista via request ou sessão para um JSP pelo seu Controller, que pode ser uma Servlet caso não use nenhum framework MVC.
5 - Finalmente agora você monta a paginação conforme exemplo.
Paginação não ficaria melhor sendo controlada pela persistencia ? quando voce faz uma consulta vc seleciona o offset + tamanho de pagina, ao inves de retornar uma consulta de 10000 de registros e não mostrar-los na hora.
Pedrosa me esclarece uma coisa… se alguem além dele puder me ajudar agradeço da mesma forma.
Começei a utilizar o displaytag a pouco tempo. portanto me surgiram algumas dúvidas e como encontrei várias respostas suas em muitos posts a respeito de páginação recomendando o Displaytag, acredito que deva conhecer bem esse componente.
Talvez vc possa me ajudar…
Esse componente, ao que me parace que, pega todo o conteúdo recuperado em uma lista e envia, de uma vez só, para a página efetuar o controle de páginação. Isso acredito eu pode vir a gerar sérios problemas de timeout quando falar-mos de milhares de registros… se eu estiver errado peço que me corrija.
Mas de acordo com a documentação existem uma forma de utilizar o Displaytag em conjunto com o Pattern Valuelist, que permite a paginação interna pela aplicação, enviando somente os registros a serem visualizados.
Sendo que infelizmente não consegui exemplos bem claros de como utiliza-los…
Concordo mas você tem exemplos mais precisos???[/quote]
Daniel,
Por persistência, a idéia é um método no Dao receber os parâmetros de inicio e quantidade. Por exemplo:
public List<Usuario> getUsuariosBlaBlaBla (int inicio, int quantidade) {
// Query q = sua query
q.setFirstResult(inicio);
q.setMaxResults(quantidade);
return getQueryResultList(q);
}
E outro método no Dao para retornar a quantidade total:
public int getQuantidadeTotalDeUsuariosBlaBlaBla ()
//Query q = (count) u FROM Usuario...restante da Query
return ((Number) getQuerySingleResult(q)).intValue();
}
Em alguma lógica sua, voce recebe uma lista de usuarios com o método “getUsuariosBlaBlaBla” e o total:
List<Usuario> usuarios = daoFactory.getUsuarioDao().getUsuariosBlaBlaBla (0,10);
int total = daoFactory.getUsuarioDao().getQuantidadeTotalDeUsuariosBlaBlaBla();
total = (total % 10 == 0) ? total / quantidade : 1 + total / 10;
Aqui no ebaH! no caso, fazemos paginação com persistÊncia desta maneira, pois não precisa carregar toda a lista para a visualização, apenas o que foi necessário para paginar.
Na visualização, porém, fizemos uma tag de paginação própria. Não é muito difícil.
A displaytag carrega todos os dados em tempo de execução, oq pode gerar, conforme alguns colegas citaram, problemas de performance.
Espero ter ajudado,