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?
esse código está dentro de um controller?
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.
só pra garantir, existe alguma mensagem de validação sendo adicionada após essa chamada?
vc está fazendo try…catch nesse método?
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.
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())
Era isso mesmo, funcionou!
Obrigado.