Richfaces com paginação sob demanda (true pagination)  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Marques
Virtual Machine Man
[Avatar]

Membro desde: 05/09/2002 10:13:28
Mensagens: 635
Offline

Colegas,

Estou com dúvidas (na verdade perdido mesmo) em como implementar true pagination, que traz os dados paginados do banco e não pegar tudo do banco e paginar na memória.

Pesquisando, encontrei a classe abaixo, porém não sei o que vai no Managed Bean e no xhml (Uso richfaces e hibernate)

Um exemplo seria bem-vindo.

Muito obrigado,

Marques

rjbcordeiro
JavaEvangelist

Membro desde: 27/03/2007 09:10:23
Mensagens: 307
Localização: Olinda - PE
Offline

blz meu amigo, vou tentar te ajudar, bom esta classe ai vai te retornar um datamodel, para vc fazer um binding em seu datatable.
1 - pode ver que no construtor vc vai passar a lista, o numero total de linhas e da paginação e a quantidade de linhas por pagina;
2 - em seu managedbean vc tem que ter um atributo do tipo datamodel tipo:



lá no seu arquivo gui, vc vai fazer:



e vc pode usar o proprio componente do table para paginar e não vai ficar na memoria pq vc já esta tratando com a classe que vc criou ai




tenta ai, qualquer coisa pergunta blz.

This message was edited 1 time. Last update was at 09/11/2010 16:38:54


Não desista

topico == resolvido ? '[RESOLVIDO]' : :'(
[Email]
Marques
Virtual Machine Man
[Avatar]

Membro desde: 05/09/2002 10:13:28
Mensagens: 635
Offline

Meu caro jbcordeiro,

Vc poderia me passar os métodos abaixo?
getFachada().consultaTodosUsuarios(first, rows);
totalSize = getFachada().consultarTotalTodosUsuarios();

Muito obrigado,

Marques



rjbcordeiro
JavaEvangelist

Membro desde: 27/03/2007 09:10:23
Mensagens: 307
Localização: Olinda - PE
Offline

vc utiliza hibernate?

nele tem o


com estes métodos sua consulta faz a paginação de dados direto no banco, trazendo apenas a quantidade necessária.

Não desista

topico == resolvido ? '[RESOLVIDO]' : :'(
[Email]
Marques
Virtual Machine Man
[Avatar]

Membro desde: 05/09/2002 10:13:28
Mensagens: 635
Offline

sim
rjbcordeiro
JavaEvangelist

Membro desde: 27/03/2007 09:10:23
Mensagens: 307
Localização: Olinda - PE
Offline

lá do seu Dao(ou qualquer outro padrão que vc utilize), mostra ai sua consulta para mostrar no datatable

Não desista

topico == resolvido ? '[RESOLVIDO]' : :'(
[Email]
murilo_scool
Debugger
[Avatar]

Membro desde: 12/11/2008 11:07:47
Mensagens: 57
Offline

e quando há 2 lista(grid) na mesma página?!?
as 2 grids não aparecem ao mesmo tempo,
são apresentadas em diferentes status!

quando a 2ª grid esta sendo apresentada e a mesma possui paginação,
ao clicar para mudar de página, a ação gerada no backing esta sendo
como se fosse para a 1ª grid que no momento nem esta sendo exibida.
ricardobarcelar
Smalltalk

Membro desde: 21/02/2011 20:02:23
Mensagens: 1
Offline

Ok... 10!

This message was edited 1 time. Last update was at 24/02/2012 12:27:14

cristianonasciment
JavaTeenager
[Avatar]

Membro desde: 05/03/2007 15:38:04
Mensagens: 154
Localização: Brasilia
Offline

Bom dia galera... Estou tentando usar esse exemplo com SEAM mas estou com problemas:

PagedDataModel:

ManagedBean:

.xhtml


O problema que eu estou tendo inicialmente é no VALUE do datatable, ele não chama o método do meu bean que vai fazer a paginação (getTableModel). Se no value do dataTable eu passar #{usuarioBean.tableModel} ele dá o seguinte erro:


Se eu deixo como está, a tela abre, mas não chama o método que vai fazer a paginação.

Qualquer ajuda vai ser bem vinda...

Agradecendo desde já,

SCJP 1.5
cristianonasciment
JavaTeenager
[Avatar]

Membro desde: 05/03/2007 15:38:04
Mensagens: 154
Localização: Brasilia
Offline

Resolvi em partes o problema. Ele não entrava no meu método pq eu estava usando a anotation @In do Seam no tableModel.

tirando o @In ele consegue entrar no método assim:




Ai com isso ta fazendo a paginação certinha.
Com um porém, rss. Qdo eu clico pra ir pra segunda paginação, ele está entrando 3 vezes no getTableModel(), fazendo a mesma consulta 3 vezes.

Alguém tem idéia do pq ??

SCJP 1.5
rock
Debugger
[Avatar]

Membro desde: 31/07/2008 07:03:54
Mensagens: 63
Offline

Olá Cristiano,

Qdo eu clico pra ir pra segunda paginação, ele está entrando 3 vezes no getTableModel(), fazendo a mesma consulta 3 vezes.

Alguém tem idéia do pq ??


Já vi essa dúvida em vários posts aqui mesmo no GUJ (e nao lembro de ter visto a resposta).

Sugiro a leitura do Capítulo " 6.7 Factory and manager components " do livro Seam In Action.

Pelo que compreendi: durante o ciclo de vida do JSF, o componente ui pode ser acessado/visitado várias vezes. É o comportamento normal do JSF.
A sugestão é utilizar o @Factory que executará a consulta na primeira vez e armazenará o valor na variável de contexto. Nas solicitações seguintes é recuperado o valor que foi armazenado.
Acredito que será necessário estudar sobre o @Factory, @Unwrap, @Observer para que você saiba como utilizá-los de uma forma onde a consulta no banco seja executada nos momentos apropriados.

apalmeira
Java Ninja

Membro desde: 01/11/2006 00:48:21
Mensagens: 250
Offline

Olá pessoal,

O método table.getFirst() não funcionou para mim, ele sempre retorna ZERO.

Tive que fazer dessa forma para funcionar: first = (scroller.getPage() * rows) - rows;

Alguém sabe o que pode ter ocorrido para não funcionar?

Utilizo: JSF 2.1 e RichFaces 4.1.
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team