Olá pessoal
Estou com dificuldade de fazer paginação.
Estou usando displaytag para listar.
Alguém!
Olá pessoal
Estou com dificuldade de fazer paginação.
Estou usando displaytag para listar.
Alguém!
vc já colocou o atributo “pagesize”?
ex:
<display:table id="cliente" pagesize="10">
...
</display:table>
cleison, se for aquele caso dos 29mil registros, o displaytag puro não vai ajudar…
tenta fazer o simples: uma lógica que recebe um int que é a página que vc tá…
na sua query (ou criteria) coloque:
query.setMaxResults(20).setFirstResult(pagina*20)
e mostre os resultados numa tabela comum… com isso funcionando é só adaptar pro que vc precisa
cleison, se for aquele caso dos 29mil registros, o displaytag puro não vai ajudar…tenta fazer o simples: uma lógica que recebe um int que é a página que vc tá…
na sua query (ou criteria) coloque:
query.setMaxResults(20).setFirstResult(pagina*20)e mostre os resultados numa tabela comum… com isso funcionando é só adaptar pro que vc precisa
Isso mesmo Lucas.
no meu Dao ficou assim
public List<Produto> listaTudo(int first, int max) {
Criteria criteria = this.session.createCriteria(Produto.class);
criteria.addOrder(Order.asc("nome"));
criteria.setFirstResult(first);
criteria.setMaxResults(max);
return criteria.list();
}
O que poderia fazer no meu controller e jsp?
lista como se vc estivesse com a lista inteira…
a única diferença é que vc tem o parâmetro page, e vai definir qtos resultados por página.
no jsp é só colocar links pra próxima página, ou usar um link como esse: http://plugins.jquery.com/project/pagination
Alguém já testou isto?
http://code.google.com/p/jmesa/
Legal! 
http://code.google.com/p/jmesa/wiki/JSPTagTutorialV3
Abraço!
Se você der uma pesquisada aqui no guj nos meus posts há um que eu explico como fazer uma paginação bem interessante, integrando taglib + hibernate para paginar, inclusive com um converter para o Vraptor.
Fla Garcia
Pesquisei bastante, vi esse o post abaixo mas não compreendi como aplicar.
http://www.guj.com.br/posts/list/206481.java#1078145
Como listar a quantidade de registro desta lista?
public List<Produto> listaTudo(int pagina) {
Criteria criteria = this.session.createCriteria(Produto.class);
criteria.addOrder(Order.asc("codProduto"));
criteria.setFirstResult(pagina * 20);
criteria.setMaxResults(20);
return criteria.list();
}
qto tem no total?
vc vai precisar fazer 1 select a mais:
Long totalDeRegistros = session.createQuery("select count(*) from Produto").uniqueResult();
qto tem no total?
vc vai precisar fazer 1 select a mais:
Long totalDeRegistros = session.createQuery("select count(*) from Produto").uniqueResult();
Vlw Lucas.
Tem algum exemplo como implementar a classe paginator post do rodrigo que citei acima ou algo parecido.
Cleison, o post que te falei é esse aqui: http://www.guj.com.br/posts/list/206481.java#1077887
O código fonte está aqui: http://gist.github.com/249508
Cleison, o post que te falei é esse aqui: http://www.guj.com.br/posts/list/206481.java#1077887O código fonte está aqui: http://gist.github.com/249508
Importei os fontes… Desculpe a minha insistencia… Como interagir com DAO e Controller e JSP?
Lá no post que te passei o link explica como usar.
qto tem no total?
vc vai precisar fazer 1 select a mais:
Long totalDeRegistros = session.createQuery("select count(*) from Produto").uniqueResult();
Crie um esse metodo e funciona normal traz o total da lista.
public int getTotalRegistros() {
Criteria c = session.createCriteria(Produto.class);
c.setProjection(Projections.rowCount());
return (Integer) c.uniqueResult();
}
Como retornar somente a quantidade de registro pesquisados num metodo de busca list?
Como retornar somente a quantidade de registro pesquisados num metodo de busca list?
Com a quantidade de registros estimada (que vem de getTotalRegistros()), com o número da página atual e com a quantidade de registros por página você consegue calcular o range que você vai exibir.
int currentPage = qual-a-pagina-atual;
int perPage = quantidade-de-registros-por-pagina;
int totalRecords = getTotalRegistros(); // método que você escreveu acima
int firstRecord = (currentPage * perPage) - perPage;
int lastPage = new Double(Math.ceil((double) totalRecords / perPage)).intValue();
Agora você já sabe qual o primeiro e último registro que você precisa exibir, basta então fazer a consulta no banco utilizando esses valores:
Criteria c = session.createCriteria(Produto.class);
c.setMaxResults(perPage);
c.setFirstResult(firstRecord);
List<Produto> produtos = c.getResultList();
Como se aplicaria na seguinte busca?Como retornar somente a quantidade de registro pesquisados num metodo de busca list?Com a quantidade de registros estimada (que vem de getTotalRegistros()), com o número da página atual e com a quantidade de registros por página você consegue calcular o range que você vai exibir.
int currentPage = qual-a-pagina-atual; int perPage = quantidade-de-registros-por-pagina; int totalRecords = getTotalRegistros(); // método que você escreveu acima int firstRecord = (currentPage * perPage) - perPage; int lastPage = new Double(Math.ceil((double) totalRecords / perPage)).intValue();Agora você já sabe qual o primeiro e último registro que você precisa exibir, basta então fazer a consulta no banco utilizando esses valores:
Criteria c = session.createCriteria(Produto.class); c.setMaxResults(perPage); c.setFirstResult(firstRecord); List<Produto> produtos = c.getResultList();
public List<Produto> busca(String nome,int pagina) {
return session.createCriteria(Produto.class)
.add(Restrictions.ilike("nome", nome, MatchMode.START))
.addOrder(Order.asc("nome"))
.setFirstResult(pagina * 20)
.setMaxResults(20)
.list();
}
Você quer que eu programe por você? :twisted:
package com.commons.collections.pagination;
import java.io.Serializable;
import java.util.List;
public class PaginationList<T> implements Serializable {
private static final long serialVersionUID = -7705117997457384895L;
private List<T> list;
private int totalRecords;
public List<T> getList() {
return list;
}
public void setList(List<T> list) {
this.list = list;
}
public int getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(int totalRecords) {
this.totalRecords = totalRecords;
}
}
protected final PaginationList<T> getPaginationList(TypedQuery query, Integer page, Integer rows) {
int totalRecords = query.getResultList().size();
page = page - 1;
List<T> results = query.setFirstResult(page * rows).setMaxResults(rows).getResultList();
PaginationList<T> paginationList = new PaginationList<T>();
paginationList.setTotalRecords(totalRecords);
paginationList.setList(results);
return paginationList;
}
Você quer que eu programe por você? :twisted:
Olá garcia só não compreendi como aplicar as intruções que vc me passou, mas desde já agradeço a atenção.
cleison Bom Dia !
Nem você nem eu !
Junior.
bruno.costa Bom dia !
Obrigado, vou tentar seguir seu código, que ficou muito legível !
Abraço !
Olá, eu implementei também um objeto builder para ser utilizado na geração de json ou xml para grid’s, tem exemplo de como utilizar também.
segue o link.
CABRA DA PESTE, DA GOTA SERENA ! AFF CRUZ CREDO !
Valeeuuuuuuuuuuuuuu d + BRUNAOOOOOOOOOOOOOOOOOOOOOOOOOOOOO !
bruno, a gente pode divulgar o seu plugin na página do vraptor?
Bruno ficou muio bom !
run:
{"page":0,"total":1,"records":2,"itensPerPage":10,"rows":[["Class B","Test String","Object 1","999","06/12/2010","06/12/2010 13:20","200","R$ 999,99","$999.99"],["Another Class B","Test String Object 2","Object 2","500","06/12/2010","06/12/2010 13:20","400","R$ 5.900,99","$5,900.99"]]}
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
pode sim, estou realizando algumas melhorias nele, terminar de implementar os testes e aceito sugestões (favor criar uma issue no github).
é bom ter mais gente testando…
abraço
bruno.costa
Tu ta usando isso no teu sistema já ?
bruno.costaTu ta usando isso no teu sistema já ?
estou sim, e fizemos um plugin grid pra jQuery bem simples e leve (90% das vezes não utilizamos tudo o que os outros plugins fazem), tem paginação, ordenação e i18n, ele na versão com compressão pesa 8.4k, depois vou publicar ele também.
8.4k ? Então ficou ideal pra mim mano !
Estou no aguardo Valeu mesmo Mano !
8.4k ? Então ficou ideal pra mim mano !Estou no aguardo Valeu mesmo Mano !
kra esqueci de mandar na implementação o método que eu fiz pra ordernar a query utilizando o plugin do grid
/**
* Método responsável por completar a query com o orderby
*
* @param jpaQuery
* <p>
* Alias da query deve ser sempre i
* </p>
* @param orderBy
* @return
*/
protected final String buildOrderbyQuery(String jpaQuery, String orderBy) {
StringBuilder builder = new StringBuilder();
builder.append(jpaQuery);
if (!(orderBy == null || orderBy.isEmpty())) {
builder.append(" order by ");
}
int i = 0;
for (String order : orderBy.split(",")) {
if (i > 0) {
builder.append(",");
}
builder.append("i.");
builder.append(order);
i++;
}
return builder.toString();
}
Lucas eu mudei o nome do meu git pra ficar no padrão de twitter, blog, email etc.
segue.
blz =)
Bruno mas teve modificação no código ?
Foi alterada a forma usar reflection, alteração sugerida pelo lucas
https://github.com/brunoadacosta/EasyGridAjaxObject/commit/e5569da46b3eccd9f2efdc103b7482745515f347
próximo update será, adicionar o plugin grid e depois um blank project do vRaptor com o nosso plugin grid jQuery.
Já temos muita coisa ! isso que vc ta fazendo é uma das mais importantes !
Ajax com combo
Relatŕorio e Boleto bancário
Controle de usuário com Spring Security
Agora a paginação !
etc…
Não vou ter motivo par ausar JSF…
Valeu !
Já temos muita coisa ! isso que vc ta fazendo é uma das mais importantes !Ajax com combo
Relatŕorio e Boleto bancário
Controle de usuário com Spring Security
Agora a paginação !etc…
Não vou ter motivo par ausar JSF…
Valeu !
kra eu subi outro projetinho lá, esse é uma alteração do SiteMesh, para fazer navegação ajax estilo facebook
exemplo
em uma requisição assincrona ele retorna um json no seguinte formato
ele recorta o html usando ER e se existirem js inline ele comprime e coloca no js:code, se for um arquivo.js ele coloca no code:src e assim também pra css.
se a pessoa não utilizar requisição assíncrona ele não aplica o filtro, motores de busca vão indexar sua aplicação.
vou colocar também um blank project com vRaptor utilizando o filtro, só não posso dar prazo rsrs
Baixei já, vou da uma estudada !
Obrigado !
Baixei já, vou da uma estudada !Obrigado !
Junior, ta usando alguma das implementações? encontrou bugs? sugestões ?
abraço 
bruno.costa Boa Tarde !
A paginação estou estudando ela, achei uma ótima idéia… e outra não existe nada disso na net sobre paginação e Vraptor ! mas até agora não conseguir por para rodar no meu projeto !
Mas a briga continua …
Grande abraço Bruno !
jr