página vem antes da ação no JSF ?!  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

pessoal estou iniciando no JSF e tenho uma dúvida que acredito ser uma dúvida de muitos. Quando acionamos uma URL no JSF o fluxo nos direciona a uma página e não a uma ação para depois uma página. como é o caso do struts. Como entao eu faco meu Back Bean popular um combo por exemplo se a página vem antes da ação ?

Sun Certified Java Programmer 5
raf4ever
GUJ Master

Membro desde: 30/01/2005 01:34:51
Mensagens: 1755
Localização: Fortaleza-Ce
Offline

Não necessariamente redireciona a uma página.

Vc pode perfeitamente invocar uma action:


e depois de executar a lógica do método ai sim direcionar pra página.

Rafael Roque
Quis custodiet ipsos custodes?
IBM Certified SOA Associate
ITIL Foundations Certified
SCEA(I)
SCWCD
SCJP
[Email] [MSN]
juliofsn
JavaEvangelist
[Avatar]

Membro desde: 21/11/2006 20:48:46
Mensagens: 311
Offline

Imagine que você tem um ArrayList de Produtos no seu backing bean:


De forma bem simplificada, você pode preencher um combo box assim:


Há outras formas bem melhores, dependendo da biblioteca de componentes que você estiver usando, mas o básico é isso aí. É importante perceber que apesar de acessar "produtos", ele na verdade está chamando o método getProdutos do backing bean.

Que a Força esteja com Você!
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

pessoal nao sei se me expressei bem, vou tentar novamente. O problema é quanto ao fluxo do JSF. Eu entrei na página, digamos minha página HOME. Como é feito no jsf para que nessa página HOME já venha meu combo populado ?



tudo bem isso me daria uma acao para popular o combo. Mas eu teria que pressionar o botao, ou o link, ou ENFIM o evento ! Eu quero já trazer o combo populado sem precisar passar pelo construtor do meu back bean, pois nesse momento eu nao teria acesso ao contexto do spring. É como se tivesse um método init() que por exemplo seria executado toda vez q eu invocasse essa página antes de mostrá-la.

Sun Certified Java Programmer 5
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

ninguem ? Nenhuma ideia ?

Sun Certified Java Programmer 5
Priuli
JavaEvangelist
[Avatar]

Membro desde: 27/12/2007 19:31:45
Mensagens: 373
Offline

no seu construtor do backbean vc carrega a sua lista..
ex:


quando o backbean for instanciado ele já carrega a sua lista, ou então no seu metodo get você pode carregar a lista tb.. isso funcionaria para escopo de request mais de sessao não mudaria muito...

Projetos:
OpenSutils-Br4J - http://code.google.com/p/opensutils-br4j/

Priuli-Filter - http://sourceforge.net/projects/priuli-filter/

Certificação:
OCPJ 6 90%
[Email]
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

humm obrigado Priuli, eu acabei resolvendo utilizando o keepAlive para aumentar o escopo do Back Bean e nao precisar ir no banco a cada request para recuperar a lista. Alem disso no momento de criacao da lista nao consegui obter o contexto do spring, ou seja, os beans de servico injetados...

Sun Certified Java Programmer 5
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

pessoal, é normal nao conseguir obter um bean injetado pelo spring ( por exemplo de um servico ) no construtor do back bean ?

Sun Certified Java Programmer 5
Priuli
JavaEvangelist
[Avatar]

Membro desde: 27/12/2007 19:31:45
Mensagens: 373
Offline

Cara já tive este problema com o @Autowired do spring, quando adicionava @Autowide em um contrutor de uma classe com anotation @Service ele não conseguia injetar, pelo construtor ai eu mudei para injetar via set (pelo metodo), porem para classes com a anotação @Component o spring injetava de boa pelo construtor..
Eu não me aprofundei para solucionar o problema, pois estava sem tempo e tinha que entregar o projeto o quanto antes ai resolvi trocando para injetar via gets and setrs...


Projetos:
OpenSutils-Br4J - http://code.google.com/p/opensutils-br4j/

Priuli-Filter - http://sourceforge.net/projects/priuli-filter/

Certificação:
OCPJ 6 90%
[Email]
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

eu uso via getter e setter, fazendo um autowire by name. Mas no momento do construtor do Back Bean ainda nao foi feita a injecao. Como resolver isso ?

Sun Certified Java Programmer 5
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team