Passar parametro jsf

8 respostas
maurenginaldo

Oi pessoal,

Estou com problema para passar parametro entre páginas. O Cenário é o seguinte:

Tem uma pagina que tem um menu.
No action do menu tem o nome de uma página que está mapeada no menu faces-config.
Clico no menu e a página é chamda, porém, quero passar um objeto e recuperá-lo no bean que controla a página de destino.

Como faço isso?

8 Respostas

Marky.Vasconcelos

Se você tiver um actionListener você pode passar o parametro via <f:param> e no listener pegar o objeto.

maurenginaldo

Eu não tenho um actionListner, o que tenho é o seguinte:

Tenho uma página que é controlada por um bean que tem o parâmetro que quero passar,
essa página tem o menu que possui um action que está mapeado no meu faces-config,
A linha do menu é a seguinte:

<rich:menuItem value="cadastro" action="cadastrar_cidade" ></rich:menuItem>

Quando ocorre o clique nesse menu, a nova página é chamada. Essa nova página tem um bean
para controla-lá. No construtor desse bean quero pegar o valor que está nop outro bean
que controlava a página antiga.

Esse é o meu problema.

Marky.Vasconcelos

Você quer pegar o ManagedBean então?

Use o ELResolver do FacesContext para isso.

Leozin

não precisa ser um action listener pra usar o <f:param>

você pode usar o f:param tranquilamente, independente de ser um action ou um action listener

se você quiser usar SOMENTE no faces, você pode botar também como atributo, que é bem legal ;D

abraço

maurenginaldo

Oi pessoal,

vcs poderiam colocar um pequeno exemplo para ilustrar melhor?
Valeu!

Ferryman

Eai cara,

Bom ai vai um exemplo.

No Construtor do bean que cuida da action cadastrar_cidade vc consegue pegar o bean que está com o dado preenchido.

O código abaixo faz isso.

FacesContext.getCurrentInstnce().getApplication.EvaluateExpressionGet(facesContext.getCurrentInstance(), “nomeDoBeanQueQueroPegar” NomeDoBeanQueQueroPegar.class);

Falou

maurenginaldo

Valeu Ferryman,

vou tentar.

Leozin

não sugiro a usar EvaluateExpression, somente em casos MUITO específicos, como por exemplo acessar um BackingBean de sessão

pra você pegar os parâmetros:

1- dentro do teu commandButton ou commandLink, você colocar assim:

<h:commandButton value="Testar meus parâmetros" action="#{meuBean.testarAction}> <f:param name="parametroTeste" value="funcionou!" /> </h:commandButton>

2- Depois no teu método de action

public String testarAction() { String s = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "parametroTeste" ); log.info( s ); return "success"; }

E pronto =)

Criado 28 de janeiro de 2008
Ultima resposta 28 de jan. de 2008
Respostas 8
Participantes 4