Pessoal, estou aplicando um pouco da implementação do projeto do curso em um projeto pessoal, usando o wildfly.
Estou tendo problemas em injetar as informações gravadas na sessão em um listener. Quando eu tento fazer:
RHServidor servidor = (RHServidor) sessionMap.get("usuarioLogado");
Sempre eu obtenho null. Só que antes de chegar neste ponto, eu já tinha colocado informação neste objeto.
sessionMap.put("usuarioLogado", this.servidor);
Eu até consigo obter este valor em outros pontos do sistema. Só não estou conseguindo no injetar este valor no phaseListener, que é um Restore View after.
Alguém saberia dizer qual seria o problema ou teria alguma ideia do que poderia ser?
Segue a implementação da minha classe Autorizador.
@SuppressWarnings("serial")
public class Autorizador implements PhaseListener {
@Inject @ScopeMap(Scope.SESSION)
private transient Map<String, Object> sessionMap;
@Inject
protected FacesContext context;
@Inject
private NavigationHandler handler;
public void autoriza() {
String nomePagina = context.getViewRoot().getViewId();
System.out.println(nomePagina);
if ("/login.xhtml".equals(nomePagina)) {
return;
}
RHServidor servidor = (RHServidor) sessionMap.get("usuarioLogado");
if (servidor != null) {
return;
}
// redirecionamento para login.xhtml
handler.handleNavigation(context, null, "/login?faces-redirect=true");
context.renderResponse();
}
@Override
public void afterPhase(PhaseEvent arg0) {
autoriza();
}
@Override
public void beforePhase(PhaseEvent arg0) {
//autoriza();
}
@Override
public PhaseId getPhaseId() {
// TODO Auto-generated method stub
return PhaseId.RESTORE_VIEW;
}
}