JSF: Passando parâmetros de um managedbean para outro managedbean
16 respostas
R
rufostec
Bom dia a todos,
sou um iniciante em JSF, vou colocar a situação no exemplo abaixo
estou com uma questão, tenho uma pagina1.jsf com o managedbean Login.java e uma outra pagina2.jsf com o managedbean LoginX.java, ambas tem propriedades iguais usuario e senha, com seus getters e setters, eu gostaria que na pagina2.jsf no LoginX.java tenha o mesmo dado do usuario da Login.java, como faço isso?
eu to colocando essa situção nessa forma só que não é rsss é que fica fácil de entender o problema.
sou um iniciante em JSF, vou colocar a situação no exemplo abaixo
estou com uma questão, tenho uma pagina1.jsf com o managedbean Login.java e uma outra pagina2.jsf com o managedbean LoginX.java, ambas tem propriedades iguais usuario e senha, com seus getters e setters, eu gostaria que na pagina2.jsf no LoginX.java tenha o mesmo dado do usuario da Login.java, como faço isso?
eu to colocando essa situção nessa forma só que não é rsss é que fica fácil de entender o problema.
não posso usar sessão
O SaveState nao te ajudaria nesse caso?
R
rufostec
acho q não
eu vi um exemplo de comunicação entre beans mas usaria session e eu não posso nem falar disso rssss
Eduardo_Bregaida
rufostec:
acho q não
eu vi um exemplo de comunicação entre beans mas usaria session e eu não posso nem falar disso rssss
Nao nao o SaveState vc vai salvar o estado atual dos beans e passa pelo args alimentando os outros bens. nao é Session
não deu certo, acho q to usando errado esse cara t:saveState.
vou pesquisar melhor, mas se tiver algum exemplo me ajudaria.
obrigado.
urubatan
tu pode fazer binding entre as propriedades dos beans sem problemas, mesmo eles não sendo armazenados na session.
faz isto usando o faces-config.xml mesmo …
tem isto no último post do meu blog sobre JSF, la eu estou utilizando session, mas não é necessário isto …
Outra forma seria armazenar os dados em uma cookie e recuperar eles no outro MB
toninho
Olá, não sei se entendi direito a pergunta mas se você quer acessar de dentro de um método de um bean x, o estado (as propriedades) de um bean y, pode fazer algo assim:
No meu caso criei uma classe com um método estático
sendo que como parâmetro do método getContextInfo vc vai passar o nome do bean como foi registrado no faces-config.
Inté
R
rufostec
Vou testar essas e depois eu digo aqui.
vcs são demais, muito obrigado antecipadamente.
R
rufostec
vamos lá,
o esquema do ubiratan eu ainda to tentando entender, se puder me ajudar eu aguadeço, mas o esquem do amigo ai funcionou numa boa, quero agora entender esse Binding, pq eu nunca usei ele.
Estou implementando um sistema em JSF e tambem tive este problema com relação a passagem de parâmetro no JSF.
Depois de pesquisar muito achei a página do BalusC que é uma das poucas que trata deste assunto de diversas formas diferentes. Dá uma olhada lá e veja qual é o caso que se encaixa melhor no que você estiver fazendo
Ué… Se ambas as classes têm atributos iguais, por que não usa o mesmo managed bean para ambas as páginas e mantém seu estado com o t:saveState?
Se ainda assim quiser fazer dessa maneira, você pode fazer o seguinte:
Use o t:saveState na página1 para o managedbean de login.java
Na página2 em vez de usar os atributos do managedbean de loginx.java continue com os de login.java e faça isso:
<h:commandButton action="#{loginx.action}" value="pronto">
<f:setPropertyActionListener value="login.atribute" target="loginx.atribute"/>
</h:commandButton>
Acho que isso resolve seu problema.
F
Flin
Pelo o que entendi você está em uma página que tem atributos mapeados para o Login.java e da um post para uma action do LoginX.java certo?
Se sim você pode injetar o Login dentro do LoginX e pegar os parâmetros normalmente. Ou pegar o Login através do FacesContext como alguns estão sugerindo.
R
rufostec
Obrigado galera,
ajuda de vcs foi perfeita, eu fiz o exemplo do toninho e deu certo, só que eu nunca usei o t:saveState que o ubiratan disse, assim fui tentar entender esse cara.
É que estou em um projeto que foi feito em JSF e ta pintando a necessiade de não usar sessão, em resumo ta um rolo danado, eu fiz um curso de jsf mas nunca tinha trabalhado, por isso que to apanhando rs.