Boa tarde, GUJ!
Em minha aplicação, tenho um UsuarioBean com escopo de sessão onde ele trata do Usuario. Estou tentando recuperar o usuário daquela sessão em específico utilizando:
UsuarioBean ubean = (UsuarioBean ) FacesContext.getCurrentInstance().
getExternalContext().getSessionMap().get("usuarioBean");
Porém ele me retorno somente o último valor. Por exemplo:
- Acessei o sistema através do Chrome com o nome Marcelo
- Acessei o sistema através do Firefox com o nome João
Se eu acionar um botão para me exibir o usuario daquela sessão, ele me dirá o nome “João” só porquê foi o último a entrar na sessão. Vice-versa também ocorre o mesmo problema.
Estou fazendo da seguinte forma:
UsuarioBean
package controller;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import observer.Observador;
import model.Usuario;
@ManagedBean
@SessionScoped
public class UsuarioBean implements Observador{
private Usuario usuario;
public UsuarioBean(){
this.usuario = new Usuario();
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
@Override
public void atualizarMensagem(String mensagem) {
System.out.println( getUsuario().getApelido() + " : " + mensagem);
}
@Override
public String toString(){
return getUsuario().getApelido();
}
@Override
public boolean equals(Object o){
return ((UsuarioBean) o ).getUsuario() == getUsuario();
}
}
Usuario
package model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import controller.UsuarioBean;
import observer.Observador;
@Entity
public class Usuario implements Observador {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column
private int id;
@Column
private String apelido;
@Column(name = "data_entrada")
private Date dataHoraEntrada;
@Column(name = "data_saida")
private Date dataHoraSaida;
public Usuario(){
this.dataHoraEntrada = new Date();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getApelido() {
return apelido;
}
public void setApelido(String apelido) {
this.apelido = apelido;
}
public Date getDataHoraEntrada() {
return dataHoraEntrada;
}
public void setDataHoraEntrada(Date dataHoraEntrada) {
this.dataHoraEntrada = dataHoraEntrada;
}
public Date getDataHoraSaida() {
return dataHoraSaida;
}
public void setDataHoraSaida(Date dataHoraSaida) {
this.dataHoraSaida = dataHoraSaida;
}
@Override
public void atualizarMensagem(String mensagem) {
System.out.println(mensagem);
}
@Override
public boolean equals(Object o){
return ((Usuario) o ).getApelido() == getApelido();
}
}
O que diabos estou fazendo de errado? Obrigado pela atenção