Vrapor Validator erro ao salvar[RESOLVIDO]

4 respostas
vasilvei

Bom dia estou com problema ao salvar um objeto, que acontece as vezes, gostaria de saber se estou fazendo da forma correta o redirecionamento, e se realmente eu preciso usar o validator(Como diz na exception)

Segue metodo de salvar no meu controller e a exception que da OBS: é salvo os dados

Controller:

@Restrito
	@Path("/contador")
	@Post
	public void adiciona(Contador contador) {
		try {
			repository.save(contador);
			result.include("mensagem", "Salvo");
			result.include("categoria", "Sucesso");
			result.redirectTo(this).lista();
		} catch (PersistenceException e) {
			result.include("mensagem", e.getMessage());
			result.include("categoria", "Falhou");
			result.include("contador", contador);
			result.include("tratabotoes", "emedicao");
			result.redirectTo(this).formulario();

		} catch (Exception e) {
			result.include("mensagem", e.getMessage());
			result.include("categoria", "Falhou");
			result.include("contador", contador);
			result.include("tratabotoes", "emedicao");
			result.redirectTo(this).formulario();
		}

	}

EXception:

....
Grave: Unhandled exception occurred whilst decorating page
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.
.....

A mensagem diz para eu usar o validator mas eu não vejo a necessidade de usar, posso estar engando e gostaria da opinião de vocês, como devo fazer para retornar uma mensagem ao meu usuário, ou qual a melhor forma, esta forma que estou fazendo esta correta?

Obrigado!

4 Respostas

fabio.cbrandao

Cara embora eu use o validator, aparentemente não encontrei nada de errado na forma q vc implementou. De qualquer forma use o validator…

@Restrito  
        @Path("/contador")  
        @Post  
        public void adiciona(Contador contador) {  
            try {  
                repository.save(contador);  
                result.include("mensagem", "Salvo");  
                result.include("categoria", "Sucesso");  
                result.redirectTo(this).lista();  
            } catch (PersistenceException e) {  
                validator.add(new ValidationMessage("mensagem", e.getMessage()));
                validator.add(new ValidationMessage("categoria", "Falhou"));
                validator.add(new ValidationMessage("contador", contador));
                validator.add(new ValidationMessage("tratabotoes", "emedicao"));
                validator.onErrorUse(page()).of(this).formulario();
      
            } catch (Exception e) {  
                validator.add(new ValidationMessage("mensagem", e.getMessage()));
                validator.add(new ValidationMessage("categoria", "Falhou"));
                validator.add(new ValidationMessage("contador", contador));
                validator.add(new ValidationMessage("tratabotoes", "emedicao"));
                validator.onErrorUse(page()).of(this).formulario();
            }  
      
        }
Lucas_Cavalcanti

vasilvei, esse erro acontece qdo tem algum erro de conversão na requisição. Tipo vc passar uma letra pra um campo que espera um número…

verifique se isso está acontecendo mesmo…

Dica: não coloque esse tratamento de exceção genérico nos seus controllers, extraia isso pra um interceptor, e assim vc faz isso num lugar só.

vasilvei

Obrigado pelas respostas!!

Lucas por gentileza você poderia me passar algum link eu me dar algumas dicas de como fazer um interceptor, para interceptar as minhas exception genericas, e mandar uma mensagem para o meu usuários, e também fazer algo junto com o Log4j para ele grave um log com a excption?

Lucas_Cavalcanti

é um interceptor normal, onde vc faz um try…catch em volta do stack.next

só cuidado que se a exceção pode estar encapsulada dentro de outra

Criado 7 de fevereiro de 2012
Ultima resposta 7 de fev. de 2012
Respostas 4
Participantes 3