Como terminar um Managed Bean de sessão em jsf? e como definir a duração da sessão? jsf2

Como terminar um Managed Bean de sessão em jsf? e como definir a duração da sessão?
jsf2

bem… tem umas anotacoes como

@SessionScoped (objetos na sessao)
@viewScoped -> diz que os dados estaram vivos enquanto a tela for vista(evita ficar jogando objetos na sessao)

eu utilizo bastante esses dois
pessoal abaixo deve saber mais

[quote=maxmustang]bem… tem umas anotacoes como

@SessionScoped (objetos na sessao)
@viewScoped -> diz que os dados estaram vivos enquanto a tela for vista(evita ficar jogando objetos na sessao)

eu utilizo bastante esses dois
pessoal abaixo deve saber mais[/quote]
è mesmo isso que eu uso. mas se eu quiser definir o tempo de duração da sessão como faço??
eu tambem odeio jogar objectos na sessão acho isso muito ruim.
e se eu quiser fechar um managed bean de sessão ( tirar o objecto da sessão)???

Olá, para retirar ou resetar um manager bean de session basta remover ou recriar retirando ou colocado a entrada no map da sessão:

[code]//remover:
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(“ManagerBean”);

//recriar:
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(“ManagerBean”, new ManagerBean());
[/code]
Até

Legal, valeu :slight_smile: :slight_smile:

E se eu quiser pegar um atributo de um ManageBean em session em outro managerBean como faço?

Desde já agradeço a todos.

@ManagedProperty(value = "#{loginMB}") private LoginMB loginMB;
depois usa o MB LoginMB como se fosse uma variavel de instancia normal da classe.
e nao esqueçe de meter o get e o set do LoginMB

Olá amigos,

Gostaria de saber qual a diferença na situação seguinte:

Eu tenho um managedBean para o processo de login e este está com o escopo Session. Pois bem, qual a diferença de utilizar a 1a maneira e a 2a?

1a)

setUsuarioLogado(tResult.getUsuario());
  • tResult.getUsuario() proveniente do retorno de um método BO > DAO > BD

e

2a)

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("currentUser", tResult.getUsuario());

Um exemplo de utilização para o primeiro caso é na parte de menu do meu sistema. Ao efetuar o login, eu terei que trocar os botões do topo da página (Login e Registre-se). Ai eu iria utilizar este bean direto para renderizar os componentes com a propriedade rendered.

... rendered=#{loginBean.usuarioLogado != null}

Mas antes de utilizar como na 1a forma, gostaria de saber se a 2a maneira é mais recomendada ou se não há diferença sendo que os 2, no meu ver estão na sessão (ou melhor, o segundo será inserido “manualmente”).

O legal da 1a maneira é que eu nao preciso, nas minhas páginas, chamar outro metodo para verificacao da sessao e retorno. Eu seto la direto no rendered se devo mostrar ou nao ou até mesmo mostro o nome do usuario logado num output.

Sds,
Rodrigo