2
respostas

Passar parâmetros para aplicação JSF

Bom dia!

Tenho uma aplicação JSF que pode ser chamada a partir de um site.

Nesse site existe um link que chama a página de login da minha aplicação.

Gostaria de saber qual a melhor forma de passar (e receber) um parâmetro através desse link. A idéia é que, de acordo com o parâmetro passado, após o usuário efetuar o login, a aplicação inicialize de forma diferente.

Pensei em algo como: Ao clicar no link, passar o parâmetro no cabeçalho da requisição. O problema é que não sei ao certo como fazer isso, e também não sei como "pegar" essa informação no lado da minha aplicação.

2 respostas

Ola

no seu link você devera passar o parametro dessa forma, como a alura ja faz, veja, depois do login, você será direcionado para o dashboard:

https://cursos.alura.com.br/loginForm?urlAfterLogin=https://cursos.alura.com.br/dashboard

No JSF 2.2, para pegar os parametros da requisição você deverá usar, no xhtml do login, o:

<f:metadata>
    <f:viewParam value="#{Bean.url}" name="urlAfterLogin" />

E ai no seu bean, você consegue tratar a url passada.

Ola Wh, tudo bem?

vc deve passar o parametro na url e na sua view vc deve pegar esse parâmetro passado (nesse exemplo ele chama livroId):

<f:metadata>
        <f:viewParam name="livroId" value="#{livroBean.livro.id}" />
        <f:viewAction action="#{livroBean.carregaPelaId}"
            if="#{param['livroId'] != null}" />
    </f:metadata>

o viewAction é reponsável por chamar uma ação, no seu caso redirecionar para a página da permissão. Aqui nesse exemplo ele carrega o livro pelo id =):

//dentro de livroBean
public void carregaPelaId() {
        this.livro = this.dao.buscaPorId(this.livro.getId());
    }