Redirecionamento no jsf

6 respostas
C

Fala povos!

Tenho uma aplicação jsf onde navego entre algumas páginas até finalizar um form. Mas ao chegar em uma determinada página, ela não avança! esse erro só ocorre no IE7. Funciona normalmente no IE6 e firefox.

<navigation-rule>
  <from-view-id>/paginas/vbQvidaTb.jsp</from-view-id>
  <navigation-case>
   <from-outcome>sorteio</from-outcome>
   <to-view-id>/paginas/sorteio.jsp</to-view-id>
   <redirect/>
  </navigation-case>
  <navigation-case>
   <from-outcome>falha</from-outcome>
   <to-view-id>/paginas/vbQvidaTb.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>

O problema é que não redireciona pra sorteio.jsp. Fica na página fazendo reload! Não avança!
Alguém já passou por isso? Sabe dizer o que é?

falow!

6 Respostas

Lucas_Lacerda_Gertel

Então meu velho…
Um action ou um actionListener só renderiza a mesma página em duas situações:
O handleRequestNavigation não encontra nenhum outcome com o mesmo nome do retorno da tua função (o teu return string deve estar diferente) ou a tua função retorna null…

Posta ai o teu action ou o actionListener.
[]'s

C

Pois é cara! Resolvi o problema. Primeiro vou te mostrar o action:

public String acaoForm() {
		boolean sucesso = true;
		GravaPesquisa grava = new GravaPesquisa();
		FacesContext ctx = FacesContext.getCurrentInstance();

		if (verbaMassagem == null) {
			FacesMessage message = new FacesMessage(Mensagem.RADIO
					.getMensagem());
			ctx.addMessage("form", message);
			sucesso = false;
		} 
		else {
			grava.gravaEnquete(en);
			}
		}
		return (sucesso ? "sorteio" : "falha");
	}

Aí eu tirei o redirect falha do faces-config e dessa última linha, aí funcionou beleza! Agora o porquê eu não sei!

Lucas_Lacerda_Gertel

O que pode gerar um problema deste tipo é o mesmo nome de outcome em mais de um managed-bean.
Quando isto ocorre é só você definir um from-action chamando o #{bean.metodo}

Qq coisa estamos ai.
Abrax

C

vamo clarear isso pra eu enteder blz!

digamos que tenhamos o seguinte:

<navigation-rule>
  <from-view-id>/paginas/tal.jsp</from-view-id>
  <navigation-case>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/paginas/taltal.jsp</to-view-id>
   <redirect/>
  </navigation-case>
  <navigation-case>
   <from-outcome>falha</from-outcome>
   <to-view-id>/paginas/outroTal.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>

 <navigation-rule>
  <from-view-id>/paginas/maisUmTal.jsp</from-view-id>
  <navigation-case>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/paginas/teste.jsp</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>

Observe que acima eu tenho 2 outcome sucesso. tudo bem que o from view é diferente.
O que você quis dizer é que no caso acima pode ocorrer esse tipo de erro? É isso?

Lucas_Lacerda_Gertel

Isso.
Quando tenho outcomes iguais, mesmo que em navigations diferentes eu estipulo um from action.
Ainda mais quando este action está dinamico no teu commandlink ou commandbutton.

No caso de uma navegação estática acho que esse tipo de problema não ocorre.

Não tenho certeza se o erro ocorre, mas eu uso esse tipo de coisa mais pra manter legibilidade entre outras coisas.
[]'s

C

Valeu cara! Dei uma relida no core jsf em casa e vi a parada do from action!
valeu! resolvido!
:smiley:

Criado 2 de julho de 2008
Ultima resposta 2 de jul. de 2008
Respostas 6
Participantes 2