[RESOLVIDO]Tela de Login, Action ou ActionListener - Front-end - GUJ
[RESOLVIDO]Tela de Login, Action ou ActionListener
marcelo1987 Novembro 9, 2012, 3:22pm #1
Estou com a seguinte situação: Estou desenvolvendo uma tela de login e no botão de login estou chamado uma função para validar os dados do usuário no BD. No entanto, se eu utilizo o método "action", após validar o usuário ele é redirecionado para a página home, mas não exibi a mensagem de boas vindas e se uso o método "actionListener" é exibida a mensagem e não redireciona para a pagina home. Gostaria de saber como vocês resolvem essa situação.
Segue abaixo o código da chamada da função e a função utilizada para validar o login.
<p:commandButton styleClass="btn btn-primary" tabindex="3" id="entrar" value="Entrar" icon="check" action="#{loginBean.validaLogin}" onclick="javascript:envia()" type="submit" update=":growl" title="Clique Para Entrar" />
Função de validação de usuário
retornoValidacao = loginService.validarLogin(getEmail(),getSenha());
String retornoUsuario;
if(retornoValidacao == null){
retornoUsuario = "failure";
msg = new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro", "Login / Senha inválida");
retornoUsuario = "success";
getmySession();
setUsuarioLogado(retornoValidacao.getNome());
System.out.println("Nome :"+getUsuarioLogado());
msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Seja Bem Vindo", retornoValidacao.getNome());
System.out.println("retornoUsuario :"+retornoUsuario);
return retornoUsuario;
Leonardo_Gaona Novembro 9, 2012, 4:21pm #2
As mensagens são mantidas apenas na mesma requisição. Como você provavelmente está fazendo um redirect (que gera 2 requests), ela está fora de escopo. Você pode fazer um forward ao invés de um redirect, assim a mensagem seria mantida.
Na minha opinião seria mais simples deixar a mensagem de boas vindas na tela inicial. É o que fazemos aqui. FacesMessages são utilizadas sempre em conjunto com ActionListeners e Ajax, para alertar o usuário sem mudar a view em que ele se encontra.
marcelo1987 Novembro 9, 2012, 5:10pm #3
[quote=Leonardo Gaona]As mensagens são mantidas apenas na mesma requisição. Como você provavelmente está fazendo um redirect (que gera 2 requests), ela está fora de escopo. Você pode fazer um forward ao invés de um redirect, assim a mensagem seria mantida.
Muito obrigado meu amigo! era uma coisa muito simples, porém como ainda não tinha o conhecimento de redirect x forward, não sabia nem o que pesquisar.