PhaseListner

Boa tarde.

Estou usando phaselistner para o login do meu sistema.
O codigo esta funcionando, porem gostaria que meu phaselistner fosse chamado somente depois do meu bean, nao precisando assim dar dublo clique em “logar”.
Vou colocar o codigo para esclarecer

Bean

public void verificarbean() { ld = new LoginDao(); log = ld.verificar(l); FacesContext contexto = FacesContext.getCurrentInstance(); sessao = (HttpSession) contexto.getExternalContext().getSession(true); sessao.setAttribute("log", log); Login laux = new Login(); laux = (Login) sessao.getAttribute("log");

phaselistner

[code] public void afterPhase(PhaseEvent event) {

    try {
    FacesContext contexto = event.getFacesContext();
    String paginaAtual = contexto.getViewRoot().getViewId();
    boolean isLoginPage = paginaAtual.lastIndexOf("Login.xhtml") > -1;
    HttpSession sessao = (HttpSession) contexto.getExternalContext().getSession(false);
    Login login = new Login();
    login = (Login) sessao.getAttribute("log");

    if (isLoginPage && login.getTipo().equals("administrador")) {
        NavigationHandler nh = contexto.getApplication().getNavigationHandler();
        nh.handleNavigation(contexto, null, "admin");
    }
     else if (isLoginPage && login.getTipo().equals("comum")) {
    NavigationHandler nh = contexto.getApplication().getNavigationHandler();
    nh.handleNavigation(contexto, null, "padrao");
    }
    else if (!isLoginPage && !login.getTipo().equals("commum") || !login.getTipo().equals("administrador")) {
    NavigationHandler nh = contexto.getApplication().getNavigationHandler();
    nh.handleNavigation(contexto, null, "login");
    }
    } catch ( Exception e) {
        
    }
    
}[/code]

O que está acontecendo é que ele passa pelo meu phaselistner antes de rodar o meu Bean, e gostaria que fosse ao contrario.
Nao sei se isso é possivel
Muito Obrigado

Tente esse exemplo daqui!

Consegui resolver, obrigado.

Eu não sabia que o metodo getPhaseId() determinava a hora de execução do phaselistner.
Tudo o que eu fiz foi colocar .INVOKE_APPLICATION

[code]public PhaseId getPhaseId() {
return PhaseId.INVOKE_APPLICATION;

}[/code]