Oi pessoal, bem eu tenho uma aplicação que utiliza JSF e também estou usando RichFaces nessa aplicação, fiz uma classe que implementa phaseListener e implementei o método afterPhase(PhaseEvent event), segue o código da classe abaixo:
package br.com.SkyPT.model.Segurança;
import javax.faces.application.FacesMessage;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;
import br.com.SkyPT.model.beans.UsuarioBean;
public class AutorizacaoListener implements PhaseListener {
public void afterPhase(PhaseEvent event) {
System.out.println("entrei after");
FacesContext facesContext = event.getFacesContext();
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
try{
if((UsuarioBean)session.getAttribute("UsuarioConectado")!=null){
return;
}else{
FacesContext.getCurrentInstance().addMessage("loginBloqueado",
new FacesMessage("ERRO: Você não está logado no shop!"));
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "loginUserFalha");
}
}catch(Exception e){
FacesContext.getCurrentInstance().addMessage("loginBloqueado",
new FacesMessage("ERRO: Você não está logado no shop!"));
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "loginUserFalha");
}
}
public void beforePhase(PhaseEvent arg0) {
System.out.println("entrei before");
}
public PhaseId getPhaseId() {
return null;
}
}
e no meu faces-config.xml declarei esse listener:
<lifecycle>
<phase-listener>br.com.SkyPT.model.Segurança.AutorizacaoListener</phase-listener>
</lifecycle>
porém ele não passa nesse listener, ele executa um evento, submita um form e não passa pelo método, alguem pode me ajudar, obrigado.