JSF: Passando parâmetros de um managedbean para outro managedbean

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.

não posso usar sessão :frowning:

[quote=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.

não posso usar sessão :frowning:

[/quote]

O SaveState nao te ajudaria nesse caso? :smiley:

:frowning: 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

[quote=rufostec] :frowning: 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

[/quote]

Nao nao o SaveState vc vai salvar o estado atual dos beans e passa pelo args alimentando os outros bens. nao é Session :smiley:

Dá uma olhada no site do Apache Tomahawk :smiley:
http://myfaces.apache.org/tomahawk/

:shock:

vou ver o site deles,

qualquer coisa eu choro aqui, sua idéia me deixo confuso rs

[quote=rufostec] :shock:

vou ver o site deles,

qualquer coisa eu choro aqui, sua idéia me deixo confuso rs[/quote]

Hahaha normal

http://myfaces.apache.org/tomahawk/uiSaveState.html

Vê aí =) :smiley:

não deu certo, acho q to usando errado esse cara t:saveState.

vou pesquisar melhor, mas se tiver algum exemplo me ajudaria.

obrigado.

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 :smiley:

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

public class ManagedBean {
  
    public static Object getContextInfo(String info) {
		  FacesContext context = FacesContext.getCurrentInstance();
		  Application application = context.getApplication();
		  return application.createValueBinding(info).getValue(context); 
	}
}

E para recuperar o bean eu faço assim:

(UsuarioController) ManagedBean.getContextInfo("#{usuarioController}")

sendo que como parâmetro do método getContextInfo vc vai passar o nome do bean como foi registrado no faces-config.

Inté

:smiley:

Vou testar essas e depois eu digo aqui.

  1. vcs são demais, muito obrigado antecipadamente.

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.

muito obrigado a todos.

Ve se isso te ajuda : eu vi no form da sun

    FacesContext ctx = FacesContext.getCurrentInstance();
    Map sessionMap = ctx.getExternalContext().getSessionMap();

    OutroManage mbean = (OutroManage) sessionMap.get("OutroManage");
    
     this.nacionalidade = mbean.getNacionalidade();
    ou 
    mbean.setNacionalidade("teste");

:smiley:

vou ver esse tbm!

Obrigadão e um ótimo final de semana.

rufostec

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

Link: http://balusc.xs4all.nl/srv/dev-jep-com.html

Espero que resolva…

Abraço!

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.

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.

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.

Muito obrigado a todos e um bom dia!!! :smiley: