| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2010 11:29:22
|
FerTriPa
Entusiasta Java
Membro desde: 25/03/2008 12:44:53
Mensagens: 22
Localização: São Pedro do Turvo
Offline
|
Tenho uma tela que exibe um dataTable com dados vindos do banco.
Estou tentando implementar uma paginação manual, onde eu passo para uma procedure os registros que eu quero, como por exemplo do 20 ao 30, justamente pela lentidão da mesma.
Quando eu clico no 'Próximo' é chamado o método getListaTodos 2x! Vocês fazem idéia do que pode ser isso?
Eu estou boiando!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2010 11:55:40
|
weberdls
Debugger
Membro desde: 23/02/2007 13:52:13
Mensagens: 66
Offline
|
Por um acaso : listaTodos , é um atributo da classe, que tem métodos set e get e dentro do get você carrega a lista?
Até onde eu sei, não tem como "burlar" este duplo acesso que o framework faz, quando encontra o padrão "get".
Mas dá pra criar um método normal tipo : listaTodos e acessar ele via action na página.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/05/2010 21:58:24
|
FerTriPa
Entusiasta Java
Membro desde: 25/03/2008 12:44:53
Mensagens: 22
Localização: São Pedro do Turvo
Offline
|
Vlw weberdls! Implementei um método carregando a lista e minimizou o problema!
Agora esse lance de acessar 2x o atributo é novidade para mim! Você saberia explicar com mais detalhes?
Obrigado!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/05/2010 22:52:37
|
rponte
JavaEvangelist
![[Avatar]](/images/avatar/37a90a1fe7512a804347fa3e572c6b86.png)
Membro desde: 18/02/2008 10:06:25
Mensagens: 413
Offline
|
FerTriPa wrote:Vlw weberdls! Implementei um método carregando a lista e minimizou o problema!
Agora esse lance de acessar 2x o atributo é novidade para mim! Você saberia explicar com mais detalhes?
Obrigado!
Os métodos getters podem ser invocados diversas vezes durante o ciclo de vida do Faces. E isso torna-se ainda pior quando se está trabalhando com componentes de iteração, como h:dataTable, ui:repeat etc.
A dica é: evite deixar regras/lógicas caras (pesadas) dentro de métodos getters, caso contrário você terá problemas de performance para processar e exibir as páginas!
|
Rafael Ponte
http://www.rponte.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 13:30:56
|
weberdls
Debugger
Membro desde: 23/02/2007 13:52:13
Mensagens: 66
Offline
|
rponte wrote:
FerTriPa wrote:Vlw weberdls! Implementei um método carregando a lista e minimizou o problema!
Agora esse lance de acessar 2x o atributo é novidade para mim! Você saberia explicar com mais detalhes?
Obrigado!
Os métodos getters podem ser invocados diversas vezes durante o ciclo de vida do Faces. E isso torna-se ainda pior quando se está trabalhando com componentes de iteração, como h:dataTable, ui:repeat etc.
A dica é: evite deixar regras/lógicas caras (pesadas) dentro de métodos getters, caso contrário você terá problemas de performance para processar e exibir as páginas!
E qual o motivo desta duplicação de chamadas, tem um porque ou é bug? JSF2.0 corrigiu isso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 14:06:55
|
rponte
JavaEvangelist
![[Avatar]](/images/avatar/37a90a1fe7512a804347fa3e572c6b86.png)
Membro desde: 18/02/2008 10:06:25
Mensagens: 413
Offline
|
weberdls wrote:E qual o motivo desta duplicação de chamadas, tem um porque ou é bug? JSF2.0 corrigiu isso?
Não, não é bug!
A própria especificação comenta sobre isso! O framework precisa obter os dados do managed bean através de EL (Expression Language), e sempre que isso se faz necessário a EL é avaliada dentro do ciclo de vida.
Provavelmente em algumas fases do ciclo o Faces avalia a EL uma única vez e trabalha em cima desse valor, mas no final acredito que isso dependa de implementação para implementação.
No mais, o aconselho é evitar processamentos pesados dentro do getter, caso contrário isso pode se tornar um mau hábito (mais precisamente o slide 60).
|
Rafael Ponte
http://www.rponte.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2010 15:52:36
|
weberdls
Debugger
Membro desde: 23/02/2007 13:52:13
Mensagens: 66
Offline
|
OK, entendi.
Eu procurei informações sobre isto em todos os lugares, menos na especificação ¬¬
Valeu rponte!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2010 19:02:17
|
FerTriPa
Entusiasta Java
Membro desde: 25/03/2008 12:44:53
Mensagens: 22
Localização: São Pedro do Turvo
Offline
|
Obrigado pela explicação! Entendi (:
PS: eu peguei esse método já desenvolvido.. nunca curti implementar nada dentro de get/set, mas sem muita base teórica!
|
|
|
 |
|
|