Paginação sem ajax com Vraptor

8 respostas
charlesalmeida

Olá depois de uma pesquisa aqui no forum e na web, não achei nada a respeito sobre paginação com Vraptor sem ajax,
para ser utilizado por exemplo para listar notícias,
se alguém já fez algo semelhante ou sabe me indicar como fazer, e puder me ajudar fico feliz.

8 Respostas

Lucas_Cavalcanti

vc pode usar a displayTag pra isso.

charlesalmeida

Olá Lucas,

então posso fazer como se faz em jsp puro.
mas tenho que colocar resultado na sessão para controle ou não.

Lucas_Cavalcanti

claro que pode…

vc pode usar qqer coisa que dá pra fazer em jsp…

se a lista for muito grande, vc precisa configurar o displaytag pra passar os parâmetros de número da página e tamanho dela…

tem vários tópicos aqui no guj sobre isso

charlesalmeida

É com display tag não cheguei ao resultado esperado pois pretendo utilizar a paginação em textos sem tabelas.

Gostaria de saber como manipular estes dados com vraptor.

public Collection<Entidade> listByPage( int page, int rows) {
		String sql = "from Entidade";
		int inicio = (page - 1) * rows;
		Query query = manager.createQuery(sql);
		query.setFirstResult(inicio);
		query.setMaxResults(rows);
		@SuppressWarnings("unchecked")
		Collection<Entidade> resultList = query.getResultList();

		return resultList;
	}
Lucas_Cavalcanti

isso é um método do controller? se sim, é só passar como parâmetros da requisição:

page=1
rows=30

ou algo do tipo

charlesalmeida

Olá Lucas gostaria de sua ajuda,
fiz a paginação comunicando com DAO e gerando a lista de acordo com pagina até ai blz,
mas acontece que no controller preciso receber o paramentro da pagina jsp com numero da pagina,

Este é controller que funciona mas sem “?”

@Get("/usuario/{page}") public void listagem(int page, int rows) {

Não funciona sem “?”:
Este é controller

@Get("/usuario?pagina={page}") public void listagem(int page, int rows) {

Agora só consigo passar número da pagina colocando /usuario?page mas para controller funcionar precisa /usuario/page=1 o jsp com jstl:

Como fazer para pegar este parametro da url e passar ele sem usar “?” ou existe alguma outra maneira de fazer isso ?

Lucas_Cavalcanti

se vc quer passar como pagina, o nome do parâmetro tem que ser página:

@Get("/usuario")  
 public void listagem(int pagina, int rows) {

daí vc consegue passar:

<a href="${pageContext.request.contextPath}/usuario?pagina=${param.page + 1}">Proxima </a>

ou vc faz passando na uri:

@Get("/usuario/{page}")  
public void listagem(int page, int rows) {

e na jsp:

<a href="${pageContext.request.contextPath}/usuario/${param.page + 1}">Proxima </a>
charlesalmeida

Oi Lucas,

Obrigado consegui resolver com sua ajuda;

@Get("/usuario") 
	public void listagem(int page, int rows) {
		
		Collection<Usuario> usuarioList = repository.listByPage(page,3);
		
		int total = repository.countByFilter();
		
		result
		.include ("total", total)
		.include("usuarioList", usuarioList);
	}
Criado 5 de janeiro de 2012
Ultima resposta 13 de jan. de 2012
Respostas 8
Participantes 2