Pessoal, estou com o seguinte problema, tenho que disponibilizar para o usuário fazer o download de um relatório com o VRaptor. Eu já fiz isso somente com servlet. Ficou assim:
Mas acho que está incompleto. Alguém tem alguma idéia? Valew!
von.juliano
Ninguém?
sergiolopes
O que acontece? Qual é o erro?
A idéia daquele tutorial é que se você injetar o HttpServletResponse pelo construtor, pode escrever sua lógica igualzinha àquela sua Servlet.
von.juliano
Oi Sérgio, obrigado pela sugestão, eu já tinha feito dessa forma mesmo, mas imaginei que o VRaptor tivesse uma forma diferente de fazer isso, sem utilizar o response. Vou colocar a solução:
Vc poderia jogar todo o seu codigo numa lógica de vraptor. So precisa injetar o HttpServletResponse usando constructor injection ou @In (também precisa @Viewless acima do metodo).
Mas a ideia do tuturial e do vraptor em geral eh que vc nao mexe nas lógicas com a api Servlet seja Response ou Request ou Session ou …
Por isso o tutorial usa um wrapper ClientOutput que embrulha o HttpServletResponse. O Interceptor serve para criar esse wrapper. Na sua lógica vc usa o wrapper e fica livre da api servlet.
[]'s,
Nico
von.juliano
Oi Nico, cara eu acabei entendendo o exemplo do tutorial, e tentei implemetar da mesma forma que ele apresenta, só que não funcionou! Quando eu tentava usar algum método de ClientOutput, dava NullPointerException! A minha classe ClientOutput e a DownloadInterceptor estava IDÊNTICAS as do site. Acho que o interceptor é que não funcionava…
Mas tudo bem, mesmo que o problemas não tenha sido resolvido da forma mais “nobre” :XD: . Valew!!!
Guilherme_Silveira
Veja a linha do NullPointerException… assim voce descobre o que era null… e ai consegue encontrar qual linha nao foi executada que inicializava a sua variavel.
abraço
von.juliano
Oi Guilherme, obrigado por responder o tópico!
Olha só, a NullPointerException ocorre por que o ClientOutput está nulo, e se é no interceptor que ele é inicializado então acho o problema é que o interceptor não funciona! Sabe por que isso acontece?