5
respostas

Personalização #{sessionScope['usuarioLogado'].email}

Olá, considerando o exercício opcional da aula 12. Achei que ficaria interessante capturar o sessionScope, porém utilizando o split para pegar a String antes do '@' já que não existe um atributo com o nome de usuário. O que eu fiz foi criar dentro do LoginBean.java um método parecido com isso

    public String whoAmI(){
        FacesContext context = FacesContext.getCurrentInstance();

        String nome = this.usuario.getEmail();
        String cortaArroba[] = new String[1];
        cortaArroba = nome.split("@");

        context.getCurrentInstance().getExternalContext().getSessionMap().put("user", cortaArroba);

        return cortaArroba;
    }

porém não consigo capturar o mesmo no meu _template.xhtml, utilizando isso

<h:outputLabel value="Bem-vindo," for="welcome" />
<h:outputText id="welcome" value="#{loginBean.whoAmI.cortaArroba}" />

O erro que me retorna é HTTP Status 500 - /_template.xhtml @14,73 value="#{loginBean.whoAmI.cortaArroba}": Property 'whoAmI' not found on type br.com.caelum.livraria.bean.LoginBean

O que devo alterar, para que funcione do modo como eu desejo?

5 respostas

Boa tarde Andre, esse erro diz que precisa colocar o atributo whoAmI na sua classe LoginBean com os métodos get e set.

Olá, André!

Não sei muito de Java, mas vejo alguns problemas no seu código.

Primeiro, seu método whoAmI está declarado para retornar uma String, mas está retornando um array de String.

E, você está tentando acessar contaArroba de "teoricamente" uma String. Não entendi bem como seria isso.

Faz assim e me diz se dá certo:

public String getUsuario()
{
    FacesContext context = FacesContext.getCurrentInstance();

    String nome = this.usuario.getEmail();
    String[] cortaArroba = nome.split("@");
    context.getCurrentInstance()
        .getExternalContext()
        .getSessionMap()
        .put("user", cortaArroba);

    return cortaArroba[0];
}

E no _template.xhtml:

<h:outputLabel value="Bem-vindo," for="welcome" />
<h:outputText id="welcome" value="#{loginBean.usuario}" />

Oi Carlos, não resolveu ainda. O que mais eu poderia fazer para implementar esse código?

Que erro você recebeu agora, André?

André, se possível compartilhe sua class loginBean.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software