Problema com PhaseListener + NavigationRule JSF 2.0 + Primefaces

0 respostas
I

Boa tarde senhores, estou com um problema chato, que ja me deu alguma dor de cabeça, então vim aqui para pedir a ajuda dos senhores..

Na minha aplicação JSF, tenho meu PhaseListener, aonde através dele controlo o acesso as páginas, ou seja se o usuário estiver logado e com permissão ele poderá acessar o conteúdo correspondente. Pois bem até aí tudo beleza.

També criei uma classe FacesContextUtil aonde nela tenho diversos métodos, como em especial o método setNavegacao(). O mesmo é responsável por receber uma string e através dessa string setar a navegação de acordo com o navigation-rule no meu faces config. pelo método foward funciona que é uma beleza, porém gostaria de utilizar o redirect, e quando defino no meu faces config o <redirect /> a página não consegue ser carregada...

Bem segue os fragmentos do código que fazem esse procedimento se alguem puder ajudar agradeço!

Segue minha navigation Rule
&lt;navigation-rule&gt;
		&lt;from-view-id&gt;*&lt;/from-view-id&gt;
		&lt;navigation-case&gt;
&lt;!-- quando o outcome provem desse método sair, o redirect funciona corretamente --&gt;
			&lt;from-action&gt;#{loginBean.sair}&lt;/from-action&gt;
			&lt;from-outcome&gt;loginOUT&lt;/from-outcome&gt;
			&lt;to-view-id&gt;/login.xhtml&lt;/to-view-id&gt;
			&lt;redirect /&gt;
		&lt;/navigation-case&gt;
&lt;!-- aqui a &lt;from-action&gt;&lt;/from-action&gt; não é definida, essa é a regra de naveção que redireciona para a página de login, quando um usuário que não esteja logado tenta acessar uma página restrita   AQUI NÃO FUNCIONA--&gt;
		&lt;navigation-case&gt;
			&lt;from-outcome&gt;loginOUT&lt;/from-outcome&gt;
			&lt;to-view-id&gt;/login.xhtml&lt;/to-view-id&gt;
			&lt;redirect  /&gt;
		&lt;/navigation-case&gt;
&lt;/navigation-rule&gt;
if(fase.getPhaseId().equals(PhaseId.RENDER_RESPONSE))
		{
			LoginBean loginBean = (LoginBean)FacesContextUtil.getSessionAttribute("loginBean");
//Aqui faço a validação para verificar se o existe um usuário na sessão, caso retorne falso, ele será redirecionado para a página de login

FacesContextUtil.setNavegacao("loginOUT");

}
Método contido na classe FacesContextUtil
public static void setNavegacao(String outcome) {
		FacesContext.getCurrentInstance().getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null,outcome);
	}
Criado 22 de agosto de 2012
Respostas 0
Participantes 1