Vraptor - Validator

6 respostas
G

Oi pessoal,

Eu to tentando responder uma string quando ocorrer um erro de validação do meu JavaBean. Porém estou recebendo o seguinte erro:

Meu objetivo exibir a validação no front end usando ajax, por isso quero responder com uma String. O estranho é que eu to definindo “pra onde ir”:

validator.onErrorUse(Results.http()).body("erro de validação"); result.use(Results.http()).body("sem erro de validação");
Alguém sabe porque isso acontece e como resolver?

6 Respostas

Lucas_Cavalcanti

esse código está dentro de um controller?

G

Sim. Inclusive quando não dá erro de validação, ele funciona. Retorna a string “sem erro de validação”. Mas quando dá erro de validação é que essa exceção é lançada. Eu já verifiquei se essa linha tá sendo executada e está sim… Por algum motivo o Vraptor não está entendendo que quando der erro eu quero retornar uma string.

Lucas_Cavalcanti

só pra garantir, existe alguma mensagem de validação sendo adicionada após essa chamada?

vc está fazendo try…catch nesse método?

G

Não, eu só uso o validateProperties(contato, field) uma vez e antes dessa chamada.

Sim, eu faço um try catch, mas não nessa linha.

Lucas_Cavalcanti

Acho que sei qual é o problema…

o validator só lança a validationException quando o método chamado é void.

o método body retorna HttpResult.

vc precisa fazer algo como:

validator.onErrorUse(Results.http()).body("xxxxx").setStatusCode(400);

O comportamento é assim, pq não dá pra saber de um jeito fácil que vc terminou de configurar o resultado, então o validator só pára o fluxo qdo vê um método void, ou qdo vc usa um logic result (tipo um redirectTo(COntrolller.class).metodo())

G

Era isso mesmo, funcionou!
Obrigado.

Criado 4 de outubro de 2013
Ultima resposta 5 de out. de 2013
Respostas 6
Participantes 2