O erro q ta dando é porque vc ja ta mandando alguma coisa para sua view. O método (action) que está rodando isso não pode redirecionar mais nada pra view… vai abrir o relatório no visualizador padrão de pdf.
Eu não conheço JSF, então não sei te dizer em que momento ele ta começando a utilizar a stream de saida do servlet e não ta deixando vc jogar o relatorio.
Alguém que saiba melhor JSF vai poder te ajudar melhor nisso. Depois q seu método não usar a saida do servlet, vc tem q referenciar ela e fazer o trecho q te mandei q ai funciona legal, eu uso muito assim e nunca deu pau.
[quote=paulohrl]Eu não conheço JSF, então não sei te dizer em que momento ele ta começando a utilizar a stream de saida do servlet e não ta deixando vc jogar o relatorio.
Alguém que saiba melhor JSF vai poder te ajudar melhor nisso. Depois q seu método não usar a saida do servlet, vc tem q referenciar ela e fazer o trecho q te mandei q ai funciona legal, eu uso muito assim e nunca deu pau.
Abraço[/quote]
Então Paulo …o problema é “e se o acrobat estiver em outro caminho” por isso não adinta usar essa solução. Mas é sempre bom aprender novos comandos…rss.
O que rola no JSF é simples cara ele simplesmente é uma abstração das classes HttpServlet assim como o Hibernate abstrai as classes JDBC. ( mais ou menos isso ). Então fica mais fácil de trabalhar sem se preocuapr com request, reponse, session, expressionlanguagem, jstl…etc…
Porém assim como no hibernate, no JSF eu posso ir para um nível mnais baixo e pegar o request/reponse e agora vou ter q criar uma servlet dar um RequestDispatcher e incluir na minha requisição uma servlet com os seus métodos…vamos lá…tentar mais uma vez…
O que eu estava errando era: usar o RequestDispatcher de um ManagedBean para um Servlet (não funciona).
O que eu fiz então: Do ManagedBean eu gero uma instância do meu Relatório que já faz tudo referente ao relatório (não é a servlet quem preenche relatórios certo) feito isso manda põe essa instância no HttpSession e dá um response.sendRedirect("/suaServlet").
Na Suaservlet vc pega essa instância e aí sim vc poderá “escrever” no response: