| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/09/2008 08:10:44
|
yorgan
GUJ Ranger
![[Avatar]](/images/avatar/29515bb9a5d5e558e2b3ba71e3b6e037.jpg)
Membro desde: 14/08/2006 19:41:31
Mensagens: 888
Localização: Floripa/SC
Offline
|
Olá Pessoal,
Estou com uma dúvida, preciso chamar um método no bean com escopo de sessão sempre que uma página for carregada. Alguém sabe se existe uma tag para isso?
Estou utilizando JSF + RichFaces.
[]´s
Daniel
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2009 12:16:56
|
alves.Felipe
GUJ Ranger
![[Avatar]](/images/avatar/1d225d267a78f71ea5abb2364f4e91c4.jpg)
Membro desde: 21/01/2008 13:45:56
Mensagens: 766
Localização: Curitiba - Pr
Offline
|
cara.. conseguiu resolver isso?
|
Felipe Alves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2009 15:22:12
|
reinaldo558
JavaBaby
Membro desde: 21/06/2007 16:45:01
Mensagens: 78
Localização: Brasil - SP
Offline
|
Você pode inserir a chamada do método nas classes que são carregadas antes da sua página, ex.
A página1 tem um botão de ação que vai para a página2 (página2 seria o seu jsp que precisa pegar a sessão)
Quando o botão é acionado, é chamada uma classe que faz o que tem que fazer e no final chama seu método e envia as variáveis para a sessão, depois retorna para a página2.
A página2 apenas recolhe as variáveis da sessão.
|
Reinaldo Elias |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/07/2009 15:41:42
|
alves.Felipe
GUJ Ranger
![[Avatar]](/images/avatar/1d225d267a78f71ea5abb2364f4e91c4.jpg)
Membro desde: 21/01/2008 13:45:56
Mensagens: 766
Localização: Curitiba - Pr
Offline
|
cara.. acontece que eu chamo minha página no menu assim:
então não passa pelo meu controller antes de abrir a página...
|
Felipe Alves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2009 03:07:54
|
bronx
JavaTeenager
![[Avatar]](/images/avatar/9606eb3c0bc6676d20ca3196b94ba7e4.jpg)
Membro desde: 24/08/2009 02:59:47
Mensagens: 197
Offline
|
alves.Felipe use o commandLink. Aponte o atributo "actionListener" para o método do teu managed bean.
Lembrando que esse método não deve ter retorno (void) e deve receber como parâmetro um ActionEvent (do faces, não da awt!).
Quanto ao (já muito velho e, presumo eu, resolvido) caso do yorgan: resolveu teu problema?
Também estou precisando de uma tag (ou qualquer outra coisa) que permita executar um método qualquer do meu managed bean. Se é que isso existe...
Se alguém souber de alguma maneira, por favor, share!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2009 09:28:29
|
reinaldo558
JavaBaby
Membro desde: 21/06/2007 16:45:01
Mensagens: 78
Localização: Brasil - SP
Offline
|
Para chamar um método qualquer durante o carregamento da página, sem qualquer ação do usuário, eu simplesmente crio um objeto do tipo "input hidden" e atribuo para ele uma variável do bean, da mesma forma como faço em qualquer campo texto, porém no "get" desta variável não retorna apenas um return valor, mas sim a chamada do meu método e depois um return "" (vazio).
Pode não ser uma prática cinco estrelas, mas funciona.
This message was edited 1 time. Last update was at 24/08/2009 09:34:56
|
Reinaldo Elias |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2009 09:49:26
|
22-Gers
JavaChild
Membro desde: 01/09/2006 15:22:02
Mensagens: 131
Localização: Belo Horizonte
Offline
|
Se vc usar o pattern mvc é fácil resolver esse problema. Cada página de vcs tem um managedBean por trás certo? Esse managedBean deve sempre ser do escopo request(em 99,99% dos casos) e devemos usar o keepAlive od a4j para que não morra enquanto estamos na página. Sendo assim, se queremos executar um método assim que carregarmos a página é só colocarmos uma chamada a esse método no construtor do managedBean, isso irá chamar o método assim que a página for renderizada, pois o ciclo de vida do JSF instancia a sua classe java assim que carrega sua página. Eu uso dessa maneira..... []´s
|
Bacharel em Computação - Viva cada dia como se fosse o último... um dia você acerta!
Tudo vale a pena quando a alma não é pequena... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2009 10:09:07
|
reinaldo558
JavaBaby
Membro desde: 21/06/2007 16:45:01
Mensagens: 78
Localização: Brasil - SP
Offline
|
Realmente desta forma é muito mais elegante e funciona, acabei de testar.
Nota: Que falta faz não ler a documentação do framework, pelo que você explicou, isso é um comportamento básico que eu deveria saber já que o estou utilizando.
|
Reinaldo Elias |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2009 12:05:28
|
22-Gers
JavaChild
Membro desde: 01/09/2006 15:22:02
Mensagens: 131
Localização: Belo Horizonte
Offline
|
É sim, faz parte do ciclo de vida do jsg. Isso resolve quase que 100% dos casos. Em um ou outro vc tem outras opções, como por exemplo usar a tag <a4j:page> que tem um evento onload, dai vc poderia usar o <a4j:support e executar o método que vc quiser pra executar junto com a página.
Mas eu ainda prefiro o construtor...hehe.. []´s
|
Bacharel em Computação - Viva cada dia como se fosse o último... um dia você acerta!
Tudo vale a pena quando a alma não é pequena... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 10:06:04
|
lessandronp
JavaChild
![[Avatar]](/images/avatar/df29803a60f8f4f537908df8188f6676.jpg)
Membro desde: 31/07/2008 14:27:02
Mensagens: 119
Offline
|
Vocês podem achar essa prática até interessante, inclusive eu a utilizava. Porém verifiquei, que pelo fato do construtor carregar o que vem do controller, vários "selects" são executados sem necessidade, pelo motivo de qualquer chamada get que a página jsf dá em algum atributo ele entra no construtor. Estou tentando verificar uma maneira de algum cara chamar o método do controller, que preenche o form ao carregar a página jsf somente. Já tentei onLoad, mas não resolve, pois tenho q dar um reRender na tabela da pagina do jsf, e com isso ao chamar uma segunda página ele executa a renderização da tabela novamente e o redirecionamento para a outra página não funciona.
Abs,
Lessandro
This message was edited 1 time. Last update was at 23/02/2010 10:08:30
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 10:57:04
|
alias
Virtual Machine Man
Membro desde: 11/06/2007 11:09:34
Mensagens: 598
Offline
|
De fato utilizar o construtor do managed bean de escopo "request" é a solução ideal para esse caso. No entanto, o colega disse que o seu bean é de sessão...
Acho isso uma falha do jsf, nao tratar a página como um objeto, como no Asp.net, por exemplo...onde voce pode usar o evento load da página. No jsf tem que sambar um pouco pra fazer isso...
lessandronp, esse problema que voce cita, pode ser resolvido usando uma tag para persistir o estado do bean de request (como o a4j:keepAlive que os colegas citaram)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 11:25:47
|
lessandronp
JavaChild
![[Avatar]](/images/avatar/df29803a60f8f4f537908df8188f6676.jpg)
Membro desde: 31/07/2008 14:27:02
Mensagens: 119
Offline
|
Eh, vou dar uma olhada nesse cara.
O meu form é de escopo request e o controller session, pois não quero q um form dure a sessão inteira sem necessidade, ocupando instância na memória.
De qualquer forma consegui resolver o problema em partes, onde faço algo para verificar a página atual no construtor. De acordo com a página específica eu faço algo:
Mas mesmo assim ele faz duas requisições na lista de listarUsuarios, ao abrir a página a URL atual é de exibirUsuarios, porém ao clicar em algum item da tabela para abrir o cara selecionado, ele ainda
não mudou a url e executa mais uma vez. Teria que verificar a FaseListener para saber qual o estado atual desse cara. Ainda estou pesquisando algo, sem alguem souber como, agradeço desde já,
Abs,
Lessandro
This message was edited 1 time. Last update was at 23/02/2010 11:26:08
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 11:44:04
|
rafaelbtz
Java Ninja
![[Avatar]](/images/avatar/c5f441cd5f43eb2f2c024e1f8b5d00cd.jpg)
Membro desde: 29/03/2005 10:53:56
Mensagens: 276
Offline
|
Só pra acrescentar eu estou usando o 2.0 e ai basta fazer
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 11:53:08
|
alias
Virtual Machine Man
Membro desde: 11/06/2007 11:09:34
Mensagens: 598
Offline
|
rafaelbtz wrote:Só pra acrescentar eu estou usando o 2.0 e ai basta fazer
Aí sim...fomos surpreendidos novamente.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/02/2010 12:01:10
|
lessandronp
JavaChild
![[Avatar]](/images/avatar/df29803a60f8f4f537908df8188f6676.jpg)
Membro desde: 31/07/2008 14:27:02
Mensagens: 119
Offline
|
Eh, me arrebentou do mesmo jeito, rs
Estou trabalhando com o jsf 1.2 e o facelets não tem suporte a metadata.
:/
Abs,
Lessandro
|
|
|
 |
|
|