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

16 respostas
R

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:

16 Respostas

E

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:

O SaveState nao te ajudaria nesse caso? :smiley:

R

: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

E

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

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/

R

:shock:

vou ver o site deles,

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

E

rufostec:
:shock:

vou ver o site deles,

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

Hahaha normal

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

Vê aí =) :smiley:

R

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

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

obrigado.

U

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:

T

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é

R

:smiley:

Vou testar essas e depois eu digo aqui.

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

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.

R

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");
R

:smiley:

vou ver esse tbm!

Obrigadão e um ótimo final de semana.

A

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!

A

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

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

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:

Criado 16 de agosto de 2007
Ultima resposta 20 de ago. de 2007
Respostas 16
Participantes 8