jprogrammer
Se vc já pegou o PrintWriter não pode mais pegar o OutPutStream.
warley
O q eu tenho q fazer para criar o meu objeto ServletOutputStream em um JSP?
Pois na tela eu tenho q ler um array de bytes.
eu já tentei de tudo!!!
Obrigado!
danieldestro
Você tem que ler ou gravar (escrever) os bytes???
warley
Seguinte…
Eu estou querendo gerar um relatório pelo JasaperReport.
e faço isto da seguinte forma:
byte[] bytes = JasperRunManager.runReportToPdf(CAMINHO_ARQUIVO + NOME_JASPER, parametros, ds);
Só q eu tenho q abrir o relatório na tela do usuário (em um jsp).
Só q para isto eu tenho q cria um objeto do tipo ServletOutputStream para abrir na tele.
Só q tá dando um erro miserável!!!
java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:599)
org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:163)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:122)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:190)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
org.apache.jsp.relatorioConsolidacao_jsp._jspService(relatorioConsolidacao_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
br.com.polaris.billing.util.BillingFilter.doFilter(BillingFilter.java:46)
jprogrammer
Usa Servlet Cara é a mehlor coisa para isso.
danieldestro
Amigo, isso, da maneira como quer, não é possível.
Se seu JSP já imprime alguma coisa na tela, você não vai conseguir.
Ou seu JSP só grava os bytes do PDF na saída, definindo o mime-type correto ou vc não pode mesclar as saídas.
warley
Galera… Eu já tentei fazer isto dentro de Action no Strtus e deu erro tb.
Um Action é um servlet, não é???
Obs: eu usei um extends DispatchAction
Será que eu tenho q fazer em servlet separado???
Obrigado pela ajuda!!
danieldestro
Action do Struts não é um Servlet.
Olha o JSP que eu fiz e funciona:
<%@ page contentType="" %><%@ taglib uri="/struts-bean.tld" prefix="bean" %><%@ page errorPage="errorPage.jsp" %><bean:write name="meuForm" property="arquivoGerado.dados" />
jprogrammer
Se eu não me engano o próprio Jasper tem um servlet para isso.
Cara faça a action dar uma dispatch para o sevlet do relatório e mais seguro.