Problema ao implementar uma SessionScoped

3 respostas
L

Galera,

estou com um problema ao usar SessionScoped, mas espcíficamente javax.enterprise.context.SessionScoped,

@SessionScoped
public class Autenticator implements Serializable {

    private CompanyUser user;

e tenho um ManagedBean em jsf

@ManagedBean(name="loginBean") @RequestScoped public class LoginBean extends BasicController { @Inject private Autenticator authenticator;
o problema é que o Autenticator (@SessionScoped) não está se mantendo em sessão. Não sei o que pode ser, pesquisando sobre a classe javax.enterprise.context.SessionScoped existem em duas dependencias… a javaee-web-api e javaee-api, não sei se isso influencia…

Bom toda ajuda é bem vinda.

3 Respostas

L

Bom, para quem estiver com o mesmo problema, descobri duas coisas:
1° - não é possível chamar diretamente a partir da EL do xhtml, ou senha

<h:commandLink action="#{autenticator.method}" /> não funciona da mesma forma que o @ManagedBean.
2° - uso o netbeans, e navegando no objeto dentro do bean (através do debug, com breakpoint), sempre visualizo as propriedades do objeto como null, e o mesmo não estão, pois ao verificar um getter, o retorno era o objeto que deveria estar em sessão, mas a IDE extranhamente não consegue ver o objeto que está lá.

Bom posso estar errado, mas funcionou por aqui.

C

Olá amigo, o problema que voce está passando é devido a utilizacao do @SessionScoped (javax.enterprise.context.SessionScoped) + @ManagedBean
O certo seria voce utilizar @SessionScoped do pacote javax.faces.bean, pois da forma que voce está utilizando atualmente, suas paginas xhtml não “enxergarão” seus beans, pois ele espera beans gerenciados pelo CDI (anotados com @Named).
Entao, como voce utiliza o contexto do JSF o correto é utilizar o @SessionEscoped do javax.faces.bean.

Eh isso aew…

flw brother!

L

Na verdade não queria usar o @ManagedBean, pois a intenção é pode injetar ele dentro de outros servlets além do jsf, mas consegui resolver o problema mantendo um @ManagedBean com @ApplicationScoped, e neste bean injeto o outro, assim ele funciona perfeitamente. e até ficou mais limpo. Mas obrigado, agora entendi, pra chamar o @SessionScoped do enterprise, preciso tambem do @Named. Obrigado pela informação.

Criado 30 de maio de 2012
Ultima resposta 9 de jun. de 2012
Respostas 3
Participantes 2