JSF - Chamando um método sempre que entrarmos na página

Olá pessoal,
Seguinte:

Tenho um jsp que redireciona pra uma página em JSF :

ex: resquest.sendRedirect("processa.jsf?codContrato=155").

Eu gostaria de pegar o parametro na página em jsf, como faria isso? Imagino que se resolveria se eu tivesse um método que sempre executa quando a página for chamada.
Posso pegar o parametro dentro do construtor, funciona, mas só vai dar certo na primeira vez que acessar a página pois o JSF só passsa pelo construtor na primeira vez que a página é carregada. Por isso quero criar um método que sempre execute quando a página for carregada.
Bom, não sei, o que sugerem??

nao vou responder sua pergunta nao. Nao é por má vontade mas é que nao sei mesmo!
Mas pelo que to vendo vc ta pensando jsf como um action based framework como struts etc…
vc deve estar tendo a mesma dificuldade que eu no JSF.
é complicado entender esse ciclo de vida do JSF e seu comportamento.
Mas com certeza aqui no forum vai ter gente que o ajuda-rá…
to de olho nessa thread aqui hehehe
boa sorte

No JSF há, diferentemente dos actionbased frameworks, ciclos de vida. Dê uma olhada nos PhaseListener. Nele você pode fazer listener que atenda a algum ciclo ou a vários ciclos.

Fala amigão!
Seguinte, o que o jherimum disse está corretíssimo. Você está pensando em JSF como um action based framework quando, na verdade, ele é component based.
Te recomendo fazer uma busca aqui no fórum para entender melhor a diferença.
Mas, falando do seu caso específico… ao invés de chamar a sua página passando o parâmetro (como você fez), em JSF você teria, por exemplo, um objeto Contrato como atributo do seu MB (Managed Bean); preencheria o estado dele (através de busca ao BD ou da maneira que preferir) e apenas chamaria a outra página. Dessa forma, ela poderia acessar os atributos desse objeto que está no seu MB:

 <p>Id do contrato: &lt;h:outputText value="#{SeuManagedBean.seuObjetoContrato.idContrato}" /&gt;</p>

É mais ou menos isso ae!

Dê uma olhada nesse tutorial simples que você vai ter uma idéia melhor do que estou falando.

:wink:

Acho isso aqui resolveria,

	       ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
	       codigoContrato =  (String) externalContext.getRequestParameterMap().get("codContrato");

Paulo.

kra vc precisa urgentemente entender como funciona o ciclo de vida no jsf, é como aprender OO antes de aprender a programar em java …

http://www.ibm.com/developerworks/library/j-jsf2/
http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html

Olha voce pode acessar o seu Bean de controle da proxima pagina antes de dar o redirect dentro do metodo assim:

FacesContext context = FacesContext.getCurrentInstance();
ProximoBean proximo = context.getELContext().getELResolver().getValue(context.getELContext(), null, "nome_do_proximo_bean_no_faces-config.xml");

de posse do seu proximo bean vc pode modificar valores dele como tambem ja executar seus metodos. Vale salientar que eu consigo isso pois meus beans sao de sessao. Nao sei se funciona se ele for de request nao testei.

Realmente jsf eh um pouco sofrido no inicio quando vc vem com uma mentalidade das tecnologias antigas. Perguntei muito aqui no forum… muita coisa foi na marra mesmo. Mas depois que voce pega a manha… fica muito facil.

Espero ter ajudado.
[]'s

é … jsf é meio chatinho de aprende no começo, mas n desiste n, dps vc vai ver q fik mtoooo facil

e q ele é a 8ª maravilha do mundo :shock:

talvez o myfaces, o richfaces, e outras implementações que nao seja o woodstok (visual JSF). Pq este é a coisa masi enganadora q eu ja vi na minha vida!!!

[quote=fredabcdef]Olá pessoal,
Seguinte:

Tenho um jsp que redireciona pra uma página em JSF :

ex: resquest.sendRedirect("processa.jsf?codContrato=155").

Eu gostaria de pegar o parametro na página em jsf, como faria isso? Imagino que se resolveria se eu tivesse um método que sempre executa quando a página for chamada.
Posso pegar o parametro dentro do construtor, funciona, mas só vai dar certo na primeira vez que acessar a página pois o JSF só passsa pelo construtor na primeira vez que a página é carregada. Por isso quero criar um método que sempre execute quando a página for carregada.
Bom, não sei, o que sugerem??
[/quote]
Bem, acredito que vaila muito a pena você ler sobre comunicação e passagem de dados/objetos no JSF,

E sobre:

Isso só acontece caso seu managed bean esteja em escopo de session. Com escopo de request seu managed bean será instanciado a cada requisição.

No mais, dependendo do que você queria fazer eu aconselho a utilização do Restfaces (https://restfaces.dev.java.net/), assim você poderá trabalhar através do método GET com JSF de maneira simples e prática (bem melhor que implementar seu próprio phaselistener - não que você precise de um).

Abraços e boa sorte.