Iniciar Managed Bean ao acessar uma página  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
RicardoTerzella
What is classpath?

Membro desde: 17/06/2011 07:47:54
Mensagens: 5
Offline

Pessoal,

Tenho esse problema que venho contornando de diversas formas, mas queria ajuda para encontrarmos uma solução direta:

  • Quando acesso uma página JSF diretamente via URL os MBs que são usados nessa página não são inicializados com as propriedades que mapeei no faces-config.

  • Essa inicialização só acontece quando acesso o MB via alguma action, mas nem sempre esse é o caso.


  • Estou usando o MyFaces.

    As soluções de contorno que já utilizei foram: um javascript redirecionando via jsFunction do a4j e iniciar o MB via PhaseListener... mas queria saber se tem alguma solução mais rápida, mais lógica, intuitiva...

    Valeu!!

    PS.: Tentei alguma coisa via PostConstruct, mas nada...
    marcosharbs
    Virtual Machine Man
    [Avatar]

    Membro desde: 01/08/2008 11:53:39
    Mensagens: 645
    Offline

    A mais elegante acho que é inciar o MBean no PhaseListener mesmo.

    ======================================================

    Blog com foco em desenvolvimento web com java.

    http://marcosharbs.wordpress.com/

    ======================================================
    RicardoTerzella
    What is classpath?

    Membro desde: 17/06/2011 07:47:54
    Mensagens: 5
    Offline

    Obrigado pela resposta Marcos,

    Penso que num PhaseListener minha lógica fica segmentada demais. Navegando pelo código não é intuitivo buscar pelo PhaseListener.

    Por ora optei por utilizar um método PostConstruct que inicia as propriedades "manualmente".

    A situação atual é mais tranquila porque o caso que estou tratando é controlado por mim mesmo e tenho certeza de que um parâmetro será passado junto à URL.

    A solução atual está como segue:



    O ManagedBeanLoader é uma classe simples que criei e que ainda utilizo, mas que tento não mais precisar dela:



    Ainda busco outra solução...
    rodrigovfsilva
    Debugger
    [Avatar]

    Membro desde: 22/07/2005 14:44:50
    Mensagens: 68
    Localização: Rio de Janeiro - RJ
    Offline

    Você poderia criar um PhaseListener, instanciar seus MBs nele na implementação dos métodos beforePhase() ou o afterPhase().
    Dá uma lida para pegar o entendimento do ciclo de vida do JSF que vai facilitar a sua vida!


    Rodrigo Vinicius - RJ
    Engenheiro de Software - Java EE
    [Email] [MSN] [ICQ]
    RicardoTerzella
    What is classpath?

    Membro desde: 17/06/2011 07:47:54
    Mensagens: 5
    Offline

    Valeu Rodrigo!

    Cara, mas realmente não penso que um PhaseListener seja uma boa opção... o código não fica claro mesmo...

    Utilizo o PhaseListener só quando ele faz um sentido maior... como por exemplo na verificação de login válido antes de processar cada requisição...
     
    Índice dos Fóruns » Desenvolvimento Web
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team