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…
tefo
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?
Rafael_Guerreiro
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.
tefo
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..
@Restrito@Get@Path("/novoMeioReceita")publicList<Categoria>formulario(){List<Categoria>categoriaList=cenDao.listarCategoriasPorTipo(this.usuarioWeb.getIdCenario(),DominioMeios.MEIO_RECEITA.getSigla());if(categoriaList==null||categoriaList.isEmpty()){validator.add(newValidationMessage("Para criar um MEIO DE RECEITA, é necessário que antes você crie uma CATEGORIA para ele com o tipo 'Receita'!","ALERTA"));try{validator.onErrorForwardTo(CategoriaController.class).formulario();}catch(ValidationExceptione){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()returncenDao.listarCategoriasPorTipo(this.usuarioWeb.getIdCenario(),DominioMeios.MEIO_RECEITA.getSigla());}
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:
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.
Lucas_Cavalcanti
você nao pode dar catch em ValidationException!!! o VRaptor usa essa exception pra controlar a validação.
tefo
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?
Rafael_Guerreiro
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…
tefo
nossa!
ja eh bom de programar assim… imagina com a versao 4!!! —
Lucas_Cavalcanti
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