JSF: chamada duplicada  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
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!
[MSN]
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.
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!
[MSN]
rponte
JavaEvangelist
[Avatar]

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/
[WWW]
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?
rponte
JavaEvangelist
[Avatar]

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/
[WWW]
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!
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!
[MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team