Recentemente conversei com o Guilherme Silveira a respeito de tratamento de erros em aplicações escritas para o VRaptor.
Minha idéia era escrever um Interceptor que nao deixasse vazar nenhuma exception para o usuário, até aí muito simples, basta fazer algo +/- assim:
public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) {
String message = null;
boolean redirect = false;
try {
stack.next(method, resourceInstance);
} catch (Throwable e) {
....
this.result.include("error", messageAmigavel);
this.result.use(Results.page()).forward("/jsp/error.jsp");
}
}
até aí sem problemas.
Agora vamos melhorar um pouco para o usuário, no lugar de jogar o cara para uma página genérica de erro eu quero “manter o cara na pagina que ele está” e adicionar uma msg de erro, eu poderia fazer algo como this.result.use(Results.page()).redirect(requset.getHeader(“Referer”)), mas nesse caso como o redirecionamento é client-side, a mensagem de erro nao mais estará dísponível, nem os outros valores que eventualmente se queira “manter”.
Depois de comentar isso com o Guilherme a resposta dele foi: “o lucas e o kung tinham uma conversa sobre isso, mas com certeza posta!”
Como vcs estão fazendo isso por aí? Alguma sugestão?
[]s
galmeida


