| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 12:22:18
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Estou tendo problemas para recuperar alguns valores em uma classe que implementa PhaseListener.
Minha intenção é trabalhar com alguns valores retornados de uma af:table (ADF).
Porém os títulos das colunas que é preechido na página com ResourceBundle (f:loadbundle), no outputtext correspondente é retornado null em seu getValue, no phaseListener.
Se faço um teste e coloco como atributo para o título da coluna uma propriedade de um MB (ex: #{usrMB.nome}), eu tenho no "getValue" seu valor correto no phaseListener.
A mesma coisas acontece com o "var" da table, que realiza a iteração nas linhas da tabela. Ao tentar o valor de uma das linhas eu tenho null (Ex: #{var.nome}). Porém se eu coloco um valor que não é o da iteração e sim um valor fixo (ou de um atributo de um MB), ele é lido corretamente.
Resumindo, não consigo recuperar no PhaseListener valores de variáveis definidas na própria página, como as definidas em f:loadbundle e nem em definidas em "var" na iteração de uma table.
Esse comportamento é normal?
Como recuperar no PhaseListener um CoreOutputText quando na página seu value esta adicionado utilizando variáveis que só existem na página? (#bundle.meuTexto, #var.minhaLinha, etc).
OBS: Em getValueBinding do Componente aparece por exemplo "#bundle.meuTexto" .. mas no getValue null.
Obrigado
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 13:10:06
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
DETALHE:
Acabei de perceber que só tenho este comportamento em outputText.
Nas linhas das tabelas onde utilizo commandLink e recupero o valor com getText, eu tenho tudo normal. O problema é no outputtext.getValue.
Ja tentei com HtmlOutputText e com a implementação CoreOutpuText do ADF ... e fiquei com o mesmo problema.
O q pode ser?
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 13:15:20
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
em vez de usar getValue, tenta usar um getValueBinding deve resolver o problema
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 13:19:54
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
getValueBinding retorna a string literal como é escrita no value da JSP:
"#{linha.nome}"
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 13:30:39
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
com isto tu deve conseguir fazer um
vb = FacesContext.currentInstance().getApplication().createValueBinding(...);
Object value = vb.getValue(FacesContext.currentInstance());
ou algo parecido com isto ...
sei que é um trabalho do cão, mas funciona
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 13:51:48
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Urubatan, cara não sei o q esta acontecendo mas não funcionou.
Fiz da seguinte forma:
Mas obtive NULL em value.
O interessante é que depurei o 'ot.getValueBinding("value").toString()', aquilo me devolve a expressão em literal 'value=#{lista.nome}', corretamente.
Mas alguma sugestão?
Valew pela força
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 14:02:34
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
O interessante que isso acontece no PhaseListener apenas para as expressões que uso variáveis definidas na página, como bundle e var da table...
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 14:16:52
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Tentei direto tbm e nada !
ot.getValueBinding("value").getValue()
PS: ot é meu HtmlOutputText
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 14:29:21
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
provavelmente então é por que na fase que tu ta rodando o teu phase listener estes valores ainda não estão definidos ...
que fase tu ta interceptando?
execution? se não for tenta execution
outra coisa, valores de dentro da iteração do dataTable tu não vai conseguir pegar de maneira alguma fora do loop
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/01/2007 15:29:59
|
Alessandro Lazarotti
Virtual Machine Man
![[Avatar]](/images/avatar/2aaaddf27344ee54058548dc081c6541.jpg)
Membro desde: 21/01/2004 14:12:54
Mensagens: 719
Offline
|
Eu já tentei rodar em RESTORE_VIEW, UPDATE_MODEL_VALUES e até em RENDER_RESPONSE... e obtive os mesmo resultados.
Pensei nisso que você disse sobre iteração (já que a table faz iteração sobre uma coleção para criar as colunas). Porém no caso da table todas as iterações ficam armazenadas na árvore de componentes,gerando nós para CoreColumns e cada um destes criando filhos com CoreOutputText por exemplo. Tanto é, que com CommandLink no lugar de OutputText, eu recupero todos os valores. O problema é que em alguns casos não poderei usar command, teria que ser texto simples mesmo.
Segue abaixo a codificação da classe.
OBS: Se trata da classe responsável pelo ExcelExport do SandBox do Tomahawk, modificada para funcionar com ADF Faces.
Abraços
|
... Lezinho
------------------------
twitter: @lazarotti
http://alessandrolazarotti.wordpress.com/
http://jbossbrasil.org/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/02/2007 14:53:32
|
luisandro
JavaBaby
![[Avatar]](/images/avatar/60d22149eee1175d3675575416f123b1.jpg)
Membro desde: 26/09/2006 11:50:11
Mensagens: 80
Offline
|
Aproveitando o assunto sobre PhaseListener, gostaria de saber se há uma forma de chamar duas vezes a mesma fase
Exemplo:
No afterPhase da fase 6 RENDER_RESPONSE, fazer com que essa fase seja chamada mais uma vez.
Tem como fazer isso?
|
|
|
 |
|
|