Obter usuário logado na sessão e mostrar na JSP [Resolvido]

5 respostas
Guevara

Boa tarde pessoal!
Já estou virando cliente do GUJ. =)
O problema agora é que eu quero mostrar o usuário logado na JSP, peguei a apostila fj-28 e adaptei ao meu projeto, desta forma:

Na Index.jsp está assim:

<div id="content">	
		<c:if test="${usuarioLogado.isLogged}">
    	                Olá, ${usuarioLogado.nome }! <a href="<c:url value="/JMovie/login/logout"/>">Logout</a>
		</c:if>
		<c:if test="${empty usuarioLogado or not usuarioLogado.isLogged}">
    	                Você não está logado. <a href="<c:url value="/login"/>">Login</a>
    	                <a href="<c:url value="/usuario"/>">Cadastre-se</a>
		</c:if>
</div>

A minha classe UsuarioLogado está assim:

@Component
@SessionScoped
public class UsuarioLogado {
	     private Usuario usuarioLogado;
	     
	     public void efetuaLogin(Usuario usuario) {
	         this.usuarioLogado = usuario;
	     }
	     public Usuario getUsuario() {
	         return this.usuarioLogado;
	     }
	     
	     public void logout() {  
	         this.usuarioLogado = null;  
	    }  
	    	             
	    public boolean isLogged() {  
	    	 return usuarioLogado != null;  
	    }
	    public String getNome() {
	        return usuarioLogado.getNome();
	    }

	 }

O método isLogged() existe mas ao rodar a aplicação aparece este erro:

org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/jsp/index/index.jsp at line 35

32: 	<!--DIV do Conteudo -->	
33: 	<div id="content">
34: 		<!-- <a href="filme/formulario">Formul&aacute;rio</a> -->
35: 		<c:if test="${usuarioLogado.isLogged}">
36:     	Ola, ${usuarioLogado.nome }! <a href="<c:url value="/JMovie/login/logout"/>">Logout</a>
37: 		</c:if>
38: 		<c:if test="${empty usuarioLogado or not usuarioLogado.isLogged}">

Na linha 35 ele não acha o usuarioLogado.isLogged.

Precisa fazer algo mais para ele obter esse usuário logado?

Abraço!

5 Respostas

Lucas_Cavalcanti

se o método se chama isLogged vc tem que acessar via ${usuarioLogado.logged}

na jsp vc só pode chamar getters, e vc tem que tirar o prefixo get ou is (se for boolean) e colocar a primeira letra minuscula

se não funcionar com o isLogged, renomeie o método pra getLogged

Guevara

Obrigado Lucas, tá resolvido! =)

O método deve ser digitado com letras minúsculas mesmo, ficou assim:

<c:if test="${usuarioLogado.logged}">
    	Olá, ${usuarioLogado.nome }! <a href="<c:url value="/JMovie/login/logout"/>">Logout</a>
		</c:if>
		<c:if test="${empty usuarioLogado or not usuarioLogado.logged}">
    	Você não está logado. <a href="<c:url value="/login"/>">Login</a>
    	<a href="<c:url value="/usuario"/>">Cadastre-se</a>
		</c:if>

Têm que ser usuario.logged e não usuario.Logged.

Na classe UsuarioLogado ficou daquela forma mesmo:

public boolean isLogged() {  
	    	 return usuarioLogado != null;  
	    }

Como o Java é case-sensitive esse método me enganou bunito, não esperava por essa. hehehe
Abraço!

JAVADRIANO

o que da pra fazer é uma coisa assim…

public Usuario getIsLogged() {
		isLogged = (String) session.getAttribute("Logged");
		return isLogged;
	}

	public void setIsLogged(Usuario isLogged) {
		this.usuario = isLogged;
	}

e pra exibir acessa direto…

${UsuarioLogado.isLogged}
Guevara

Obrigado pela dica javadriano, mais uma opção que pode ser usada. =)
Abraço!

M

ola a todos…
eu estava lendo a apostila da caelum fj28, sou iniciante e estou tentando aprender, porem eu uso struts 2 ainda, e estou precisando fazer justamente isso, pois o layout da pagina que estou fazendo testes utilizei da apostila fj28, teria como alguem me explicar como fazer isso utilizando struts 2?

Criado 24 de março de 2010
Ultima resposta 13 de nov. de 2010
Respostas 5
Participantes 4