JSF: como chamar outra URL dentro do meu método Action?

8 respostas
vanilton.coelho

Pessoal, em uma certa página tenho um command button que deverá chamar um metodo, dentro desse metodo há uma determinada condição, se entrar nessa condição, eu devo redirecionar para uma URL especifica, fiquei perdido aqui como fazer isso, pois estou tentando fazer utilizando o senRedirect do Response, mas se eu tentar fazer isso ele dá esse erro aqui: Cannot forward after response has been committed.

como devo proceder?? a melhor forma de fazer isso???

8 Respostas

Javabuntu

coloca a navegação no faces-config e daí você no teu método dependendo da condição retorna a string configurada:

vamos supor no seu método que é chamado:

public String metodoChamado(){

   if(suaCodicao){
       // Se a condição for verdadeira quer redirecionar para a pagina chamada Qualquer.jsp

       return "retornaParaQualquer";
     }
}

no faces-config você configura a navegação:

<navigation-rule>
		<from-view-id>*</from-view-id>
		<navigation-case>
			<from-outcome>retornaParaQualquer</from-outcome>
			<to-view-id>
				Qualquer.jsp
			</to-view-id>
		</navigation-case>
	</navigation-rule>

ou seja, de QUALQUER lugar que retornar a String retornaParaQualquer você será redirecionado para Qualquer.jsp

flw Hewerton

vanilton.coelho

NAO CARA, não fui muito claro, não tem como eu especificar essa URL no faces-config nao, porque a URL é montada dinamicamente de acordo com alguns dados preenchidos em um formulario na tela, exemplo, de acordo com alguns dados que o usuario especifique, eu geraria uma url assim:

meuRelatorio.jsf?parametro1=xxx&parametro2=zzz& …

e assim por diante, ai tenho que mandar pra essa pagina que formei agora, nao tenho como especificar isso no faces-config.

javax.skol

alpharagga:
NAO CARA, não fui muito claro, não tem como eu especificar essa URL no faces-config nao, porque a URL é montada dinamicamente de acordo com alguns dados preenchidos em um formulario na tela, exemplo, de acordo com alguns dados que o usuario especifique, eu geraria uma url assim:

meuRelatorio.jsf?parametro1=xxx&parametro2=zzz& …

e assim por diante, ai tenho que mandar pra essa pagina que formei agora, nao tenho como especificar isso no faces-config.

Teste usando direto entao return “/pages/paginaMontada.jsf”

Editando =–> acho .jsf não pode, no meu caso seria paginaMontada.xhtml

vanilton.coelho

é, imaginei que não pudesse, não sei como fazer, realmente.

javax.skol

Mate tente aí, retornando o seu arquivo com a extenção real e não com a do configurada que no seu caso é *.jsf

return “/pages/blabla.xhtml”

matheuscechito

alpharagga:
Pessoal, em uma certa página tenho um command button que deverá chamar um metodo, dentro desse metodo há uma determinada condição, se entrar nessa condição, eu devo redirecionar para uma URL especifica, fiquei perdido aqui como fazer isso, pois estou tentando fazer utilizando o senRedirect do Response, mas se eu tentar fazer isso ele dá esse erro aqui: Cannot forward after response has been committed.

como devo proceder?? a melhor forma de fazer isso???

pode ser que isso resolva:

FacesContext ctx = FacesContext.getCurrentInstance();
String url = ctx.getExternalContext().encodeResourceURL("http://localhost:8080/projeto/pagina.jsf?operacao=W&codigo=1");

try {
     ctx.getExternalContext().redirect(url);
} catch (Exception error) {
     error.printStackTrace();
}

abraço

Javabuntu

alpharagga:
NAO CARA, não fui muito claro, não tem como eu especificar essa URL no faces-config nao, porque a URL é montada dinamicamente de acordo com alguns dados preenchidos em um formulario na tela, exemplo, de acordo com alguns dados que o usuario especifique, eu geraria uma url assim:

meuRelatorio.jsf?parametro1=xxx&parametro2=zzz& …

e assim por diante, ai tenho que mandar pra essa pagina que formei agora, nao tenho como especificar isso no faces-config.

realmente não foi NADA claro, então é so retornar o nome da página completa que vai funcionar.

javax.skol

Javabuntu:
alpharagga:
NAO CARA, não fui muito claro, não tem como eu especificar essa URL no faces-config nao, porque a URL é montada dinamicamente de acordo com alguns dados preenchidos em um formulario na tela, exemplo, de acordo com alguns dados que o usuario especifique, eu geraria uma url assim:

meuRelatorio.jsf?parametro1=xxx&parametro2=zzz& …

e assim por diante, ai tenho que mandar pra essa pagina que formei agora, nao tenho como especificar isso no faces-config.

realmente não foi NADA claro, então é so retornar o nome da página completa que vai funcionar.


Ué, não foi o que eu disse !? :lol:

Criado 11 de setembro de 2008
Ultima resposta 12 de set. de 2008
Respostas 8
Participantes 4