[RESOLVIDO] vRaptor - Duvida sobre as URLs

Boa tarde galera!

por acaso eh possível mudar a URL depois de redirecionar para uma pagina?

Por exemplo, quando eu vou cadastrar um produto, após inclui-lo no banco de dados, eu redireciono para a pagina de listagem de produtos. E a URL fica (…)/incluirProduto/ mesmo estando na pagina de listagem recem redirecionada, soh que quando carrega a pagina de listagem de produtos eh executado tambem uma requisiçao ajax que para o seu retorno ter efeito eh necessario atualizar a pagina, mas teria que ser com a URL de listagem de produtos e nao a URL de incluir produtos pq senao vai tentar incluir de novo ao dar o refresh na pagina…

Olhe se você não está fazendo um forwardTo para ir para a página de listagem.
Pois o forwardTo redireciona, mas não muda a url no browser… Já o redirectTo muda a url no browser…

eu preciso, imprescindivelmente, usar onErrorForwardTo… pois preciso que metodos sejam executados antes de retornar para as paginas…
existe alguma opçao de setar a URL ou alguma coisa do tipo?
ou o onErrorForwardTo pode me ajudar nisso?

Você pode usar o onErrorRedirectTo. Ele também executa o método antes. Os dois executam o método antes de retornar. A diferença está na URL.

eu fiz isso que vc disse, Guerreiro, e funcionou…

mas ta acontecendo uma coisa mto estranha no meu codigo e eu gostaria que alguem me explicasse o que esta acontecendo…[code]@Restrito
@Get @Path("/novoMeioReceita")
public List<Categoria> formulario() {

	List&lt;Categoria&gt; categoriaList = cenDao.listarCategoriasPorTipo(this.usuarioWeb.getIdCenario(), DominioMeios.MEIO_RECEITA.getSigla());
	if(categoriaList == null || categoriaList.isEmpty()){
		validator.add(new ValidationMessage("Para criar um MEIO DE RECEITA, &eacute; necess&aacute;rio que antes voc&ecirc; crie uma CATEGORIA para ele com o tipo 'Receita'!", "ALERTA"));
		try{
			validator.onErrorForwardTo(CategoriaController.class).formulario();
		}catch (ValidationException e) {
			System.out.println(e.getClass()+" - Nao foi possivel manter o redirecionamento na pagina: MeioReceitaController.formulario()");
		}
	}
	
	//retornar somente categorias do tipo REC e do cenario this.usuarioWeb.getIdCenario()
	return cenDao.listarCategoriasPorTipo(this.usuarioWeb.getIdCenario(), DominioMeios.MEIO_RECEITA.getSigla());
}[/code]este metodo acima cai dentro to TRY, logo em seguida cai no CATCH e naturalmente depois cai no return..

mas o metodo formulario() que eh chamado dentro do TRY eh executado e consequentemente sua pagina eh mostrada… e o erro abaixo o acompanha:GRAVE: Servlet.service() for servlet default threw exception br.com.caelum.vraptor.InterceptionException: There are validation errors and you forgot to specify where to go. Please add in your method something like: validator.onErrorUse(page()).of(AnyController.class).anyMethod(); or any view that you like. If you didn't add any validation error, it is possible that a conversion error had happened. at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:71) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:680)
estou fazendo algo errado no redirecionamento?

Sim, está. É o seguinte, quando o validator encontrar um erro, ele vai lançar um ValidationException. Você não pode barrar(catch) essa exception (como você está fazendo) se não vc acaba com a funcionalidade. Adicione um “throw e” dentro do catch de ValidationException. E ai ele NÃO vai executar o return.

Essa é a ideia, deu erro, para tudo e trata o erro… A forma de tratar é redirecionando o usuário.

você nao pode dar catch em ValidationException!!! o VRaptor usa essa exception pra controlar a validação.

bah, eu tava usando o try/catch quando eu usava onErrorUsePageOf, dai troquei de metodo e esqueci ele ali…
brigadao pela ajuda a todos!
ta bombando aki!!

Lucas, por acaso tem alguma previsao se vai ter alguma versao do vRaptor com JSF?

Eu queria poder curtir alguns comentários do Lucas, de tão bons que são.

Então, com JSF eu não sei. Acho que não. Mas vai sair o VRaptor 4… Esse vai ficar bem mais limpo… A gente vai programar menos ainda…

nossa!
ja eh bom de programar assim… imagina com a versao 4!!!

a integração com JSF seria muito gambiarrada, pq o JSF foi feito pra trabalhar de um jeito totalmente diferente…

mas o que deve sair no vraptor deve ser plugins com componentes mais legais

Excelente! Parabéns aos desenvolvedores! =D