Mensagem na tela de Login não aparece. JSF

1 resposta
java
Dayson_Rodrigues

Olá, estou fazendo uma tela de login usando JPA com Hibernate e primefaces. até o momento está tudo OK. Quando na tela de login eu coloco a senha errada quero que apresente uma mensagem só que não esta aparecendo.

`

<h:head>



Tela de Login

<h:outputStylesheet library=css name=sistema.css />

</h:head>
<h:body>

<div id="cabecalho">
	<h3 id="divas">Studio Diva's</h3>
</div>


	<h:form id="frm">
			<p:growl />

		<h:panelGrid columns="2" styleClass="form">
			<f:facet name="header">	Acesso ao Sistema 
			<p:messages closable="true"/>
			</f:facet>
	 		
			<p:outputLabel value="usuário:" for="usuario" />
			<p:inputText value="#{segurancaBean.usuario}" size="20" id="usuario" />

			<p:outputLabel value="senha:" for="senha" style="margin-left: 14%"  />
			<p:password value="#{segurancaBean.senha}" size="20" id="senha" />

			<h:outputLabel />
			<h:panelGroup styleClass="botoeslogin">
				<p:commandButton value="Logar" action="#{segurancaBean.logar()}" ajax="true" />
			</h:panelGroup>
		
		</h:panelGrid>
	</h:form>

</h:body>

`

Meu Bean

`package view;

import java.io.Serializable;

import javax.faces.application.FacesMessage;

import javax.faces.bean.ApplicationScoped;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.RequestScoped;

import javax.faces.bean.ViewScoped;

import javax.faces.context.FacesContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import util.MensagemUtil;

@ManagedBean
@ViewScoped
public class SegurancaBean implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 1L;
private String usuario;
private String senha;

/**
 * Método logar, ele precisar do Request,
 * @return
 */
public String logar(){
			
	try {
		this.getRequest().login(this.usuario, this.senha); //Chama o método login, passando usuario e senha.
		return "home?faces-redirect=true"; 
	} catch (ServletException e) {
		 MensagemUtil.AdicionaMensagem(FacesMessage.SEVERITY_ERROR, "Usuário ou senha Inválido!"); //deu Errado.
		return null;
	}
}

/**
 * Método que sai da aplicação.
 * @return
 * @throws ServletException
 */
public String sair() throws ServletException{
	this.getRequest().logout();
	return "login?faces-redirect=true"; //faz o redirencionamento da página.
}

/**
 * Método que retorna o Request.
 * @return
 */
public HttpServletRequest getRequest(){
	FacesContext contex = FacesContext.getCurrentInstance(); //pego o Contexto do JSF.
	
	return (HttpServletRequest)contex.getExternalContext().getRequest(); //pega contex.;
}

public String getSenha() {
	return senha;
}
public void setSenha(String senha) {
	this.senha = senha;
}
public String getUsuario() {
	return usuario;
}
public void setUsuario(String usuario) {
	this.usuario = usuario;
}

}
`

1 Resposta

lucciano01

Dayson, uma das vantagens do JSF é deixar implícito o tratamento de requisições/respostas, ou seja, esse framework faz esse trabalho para o desenvolvedor, não é necessário fazê-lo. O que vc deve fazer é adicionar os imports e as anotações corretas nos managed beans, não esquecendo de colocar os getters e setters para que sua página possa enxergar os atributos nos controllers. Então tenta fazer isso

public String login( ){

String paginaDeDestino = " ";

if( classeDeServico.seuMetodoDeAutenticacao(login,senha){

paginaDeDestino =  paginaDoUsuarioLogado;

}

return paginaDeDestino;

}

}

e caso a mensagem ainda não apareça tente isso:

MensagemUtil.AdicionaMensagem(FacesMessage.SEVERITY_ERROR, “Usuário ou senha Inválido!”);
RequestContext.getCurrentInstance().update(“frm”);

Criado 12 de janeiro de 2016
Ultima resposta 12 de jan. de 2016
Respostas 1
Participantes 2