Tratamento de erro Ajax - Customizar mensagem

1,258 views
Skip to first unread message

Kaio Valente

unread,
Mar 25, 2011, 7:09:33 PM3/25/11
to caelum-...@googlegroups.com
Boa noite senhores,

estava dando uma lida no post do blog do Makoto Hashimoto sobre tratamento de erros ajax com vraptor, no link http://www.makoto.blog.br/2011/02/tratando-erros-com-ajax-e-vraptor/

E me veio a seguinte dúvida: se eu quizer customizar uma mensagem de erro, "Erro inesperado!", por exemplo, para capturar na view. Como ficaria meu result no interceptor?
__
Att.
Kaio Valente


Lucas Cavalcanti

unread,
Mar 25, 2011, 7:28:16 PM3/25/11
to caelum-...@googlegroups.com, Kaio Valente
Pelo que eu entendi do post, vc coloca a mensagem na exceção:

throw new MinhaExceptionFavorita("Erro inesperado");

mas existem vários jeitos de fazer isso.
--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To post to this group, send email to caelum-...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vrapto...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/caelum-vraptor?hl=en.

Kaio Valente

unread,
Mar 25, 2011, 7:47:46 PM3/25/11
to caelum-...@googlegroups.com
Na verdade o que ta chegando na view é um código html com uma pilha de exceção:

 br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.RuntimeException: Erro inesperado!
    br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)

(...)
__
Att.
Kaio Valente

Lucas Cavalcanti

unread,
Mar 25, 2011, 7:54:06 PM3/25/11
to caelum-...@googlegroups.com, Kaio Valente
vc não quer isso pra ajax, né?

o melhor jeito de fazer então é com o validator: http://vraptor.caelum.com.br/documentacao/validacao/

2011/3/25 Kaio Valente <ksmva...@gmail.com>

Kaio Valente

unread,
Mar 25, 2011, 8:08:32 PM3/25/11
to caelum-...@googlegroups.com
Queria capturar as mensagens de erro no callback da minha função ajax, por exemplo:

$.ajax({
     type: 'POST',
     url: url
     // ... Envia a requisição ...
     error: function(e) {
         alert(e.responseText);
     }
}

Dá pra fazer isso usando o validator do vraptor?

__
Att.
Kaio Valente

Lucas Cavalcanti

unread,
Mar 25, 2011, 10:11:50 PM3/25/11
to caelum-...@googlegroups.com, Kaio Valente
dá... faça validações e no final delas use:

validator.onErrorSendBadRequest();

assim, se der erro de validação ele retorna a lista dos erros serializado em json. (vc vai precisar colocar um dataType:json
no $.ajax)
e pra usar o json é só usar o eval(e)

2011/3/25 Kaio Valente <ksmva...@gmail.com>

Makoto Hashimoto

unread,
Mar 27, 2011, 2:35:21 PM3/27/11
to caelum-...@googlegroups.com
Kaio;

Acredito que no método intercept do interceptor vc deve ter incluido no result a exception e não a mensagem da execption. Segue abaixo como deve ser implementado o método.

try {
                stack.next(method, resourceInstance);
            } catch (Exception e) {
                result.use(Results.http()).body(e.getCause().getMessage());
            }

Vc também pode baixar o projeto que eu usei como exemplo nesse post nesse link.
https://github.com/makotovh/post-erro-ajax

Abraços

Makoto Hashimoto
http://makoto.blog.br
Telefone: (27) 9777-6641


2011/3/25 Kaio Valente <ksmva...@gmail.com>

Kaio Valente

unread,
Mar 28, 2011, 7:47:35 PM3/28/11
to caelum-...@googlegroups.com
Na verdade o método accepts do Interceptor não estava retornando true, faltava o paramentro dataType: 'json' na minha requisição. Assim nunca passava pelo interceptor.

Obrigado pela ajuda.
__
Att.
Kaio Valente
Reply all
Reply to author
Forward
0 new messages