Pessoal, uso sempre o viewScoped, por um motivo da carregamento de imagens precisei usar o sessionScoped.
Problema : sempre chamo metodos no contrutor do viewScoped, desta forma sempre ao acessar a pagina o construtor é chamado, ja no sessionScoped o construtor só é chamado novamente quando a sessão acaba assim gostaria de chamar um metodo sempre que a pagina for carregada no sessionScoped…
Voce pode simplesmente fazer com que sua action do seu componente na tela chame um metodo específico do seu ManagedBean, assim independente do escopo que estiver trabalhando, aquele metodo será sempre chamado por causa da navegação, ou seja, sempre que carregar a tela, o método será invocado.
Abraços
Daniel.
E
erickfm8
Tinha imaginado algo parecedo, mais não sei como fazer…
tem algum exemplo?
valews
D
danieldomingues86
Segue exemplo:
<h:form><h:commandButtonaction="#{pageController.moveToPage2}"value="Move to page2.xhtml by managed bean"/></h:form>
Voce não precisa instanciar o MB, o Container que fica como responsável por fazer as devidas injeçoes de dependencia, pois asim voce retira o controle do container nesse ponto, diminuindo a coesão do metodo e amarrando seu codigo.
Agora acho que entendi melhor, pois não tinha visto seu codigo por completo, esse metodo irVisualizacaoAlbum() está em um MB reponsavel pelo menu, é isso?
Se for basta voce mudar na propria pagina do menu na action ficaria algo assim : #{meuMBSessionScoped.buscarAlbunsDoCliente} e nesse metodo buscarAlbunsDoCliente() fazer o retorno para a pagina correspondente.
Abraços
Daniel.
E
erickfm8
"Agora acho que entendi melhor, pois não tinha visto seu codigo por completo, esse metodo irVisualizacaoAlbum() está em um MB reponsavel pelo menu, é isso?
"
correto
“Se for basta voce mudar na propria pagina do menu na action ficaria algo assim : #{meuMBSessionScoped.buscarAlbunsDoCliente} e nesse metodo buscarAlbunsDoCliente() fazer o retorno para a pagina correspondente”
eu tenho varias chamadas pra essa pagina… e todas centraliza naquele metodo
se eu fazer isso vou teque colocar esta logica na aplicacao inteira
D
danieldomingues86
Oi,
Isso infelizmente demonstra uma grande fragilidade no seu aplicativo, pois se voce alterar alguma coisa nesse metodo, acaba por comprometer todo o resto.
Se cada MB seu fosse responsavel por carregar a sua propria pagina, isso não aconteceria
Abraços
Daniel.
E
erickfm8
Cada MB é responsavem pra carregar as resposabilidade , porem os controle de redirecionamento fica no MenuMB
E
edudebom
Veja se é a melhor solução para o seu caso mas pode chamar um evento ao carregar a página assim:
<f:metadata>
<f:event type="postAddToView" listener="#{menusMB.verificaPermissao(35, '2')}"/> // Verifica permissão
<f:viewParam name="id" value="#{pedidoMB.pedido}" converter="convertePedido"/> // Seta valor ao pedido já ao carregar a página
</f:metadata>