Bom dia galera!
Estava precisando fazer uma validação de login na minha página onde uso JSF 1.2, RichFaces 3.2.1 e Facelets tudo feito no NetBeans.
Pesquisando encontrei um bom material e recomendação de que eu criasse um PhaseListener para isso.
Pois bem, foi o que fiz…
Mas num certo ponto ta dando null pointer exception, ta marcado no código:
public class SecurityListener implements PhaseListener {
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
public void beforePhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
//nessa linha debaixo ta dando o NULL pointer quando chamo o getViewRoot ele me retorna nulo...
String currentPage = facesContext.getViewRoot().getViewId();
boolean isLoginPage = (currentPage.lastIndexOf("loginGUI.jsf") > -1);
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
//recupero meu managed bean de sessao com os dados do usuario
UsuarioBean currentUser = (UsuarioBean) session.getAttribute("UsuarioBean");
//valida, se não for a pagina de login E o usuario não estiver logado, manda ele de volta pro login...
if (!isLoginPage && !currentUser.isIsLogado()) {
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "gotoLogin");
}
}
public void afterPhase(PhaseEvent event) {
}
}
Resumindo, por causa desse NULLPointerException não consigo verificar se o usuário ta indo pra página de login, ai ele nem passa pelo método do bean de login, volta sempre pra página de login.
Por enquanot é só, se alguém tiver alguma dica de PhaseListeners eu agradeceria muito uma ajuda.
Grato!!
edit: troquei quote por code