Cara é o seguinte… primeiramente seu conceito de JSF ta um pouco errado… e é muito mais simples do que se imagina…
Não sei se vc notou, mas no faces-config.xml de seu projeto estão descritos todos seus managebeans e suas navegações, correto??
Existe uma propriedade para cada ManageBean, chamada , onde vc define se vai ser request ou session… ai que ta o grande ponto, vc pode utilizar as classes que estão com escopo session para colocar as informaçoes que vc necessita.
Abaixo vou descrever um exemplo:
package seuPackage;
public class SessionUsuario{
public SessionUsuario(){
}
private String nomeUsuario;
private Integer idUsuario;
public Integer getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(Integer idUsuario) {
this.idUsuario = idUsuario;
}
public String getNomeUsuario() {
return nomeUsuario;
}
public void setNomeUsuario(String nomeUsuario) {
this.nomeUsuario = nomeUsuario;
}
}
Esta classe acima será a minha classe que guardará as informações do usuario na sessão, Abaixo está a configuração deste manageBean no faces-config.xml
<managed-bean>
<managed-bean-name>SessionUsuario</managed-bean-name>
<managed-bean-class>seuPackage.SessionUsuario</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
Beleza, depois disso vc já tem sua classe contendo as informaçoes necessarias que ficaram na session, juntamente com a configuração deste ManageBean no seu faces-config.xml.
Agora é só usar esta classe, como o exemplo abaixo faz:
public class UsuarioMB{
public UsuarioMB(){
}
public void setaUsuarioNaSessao(){
//pega a sessao do usuario
SessionUsuario session = this.getSessionUsuario();
//pega os valores da sessão
Integer idUsuario = session.getIdUsuario();
String nomeUsuario = session.getNomeUsuario();
//seta os valores da sessão
session.setIdUsuario(2);
session.setNomeUsuario("Fulano de Tal");
}
//este método pega as objetos e seus valores contidos na sessão
protected SessionUsuario getSessionUsuario() {
return (SessionUsuario) getBean("SessionUsuario");
}
}
Pronto…Essa classe UsuarioMB é o seu ManageBean, que vc configura no seu faces-config normalmente, com scopo request…
Lembrando que essa classe SessionUsuario, pode ser usada em qualquer ManageBean, pois vc coloca os dados na sessão. Sendo que para utiliza-la é sempre necessario criar um método como o getSessionUsuario() criado no exemplo, para que os dados possam ser persistentes.
Fui