Falha ao Gerar PDF com Ireport com intervalo entre datas

0 respostas
java
L

Boa tarde pessoal preciso de uma ajuda de vocês…
Estou tentando gerar um relatorio via PDF com Ireport onde ele ira pegar o intervalo de duas data e mostrar o resultado o .jasper que eu criei.

O meu cenário é seguinte tenho um tela onde digito duas data por exemplo 03/10/2016 até 10/10/2016,
Depois pego essas datas recebo em outra pagina JSP com

String param1 = request.getParameter("TxtParam1");
String param2 = request.getParameter("TxtParam2");

Depois disso passo essa strings que recebeu os paramentos das datas para a programação do gerador de PDF conforme abaixo:

Connection banco = ConnectionDataBase.getConexao();
      
       File reportfile = new File (application.getRealPath("reports/RdEnt.jasper"));
      Map<String,Object> parameters = new HashMap<String, Object>();
      
     String param1 = request.getParameter("TxtParam1");
     String param2 = request.getParameter("TxtParam2");
    
        parameters.put("data1",param1);
        parameters.put("data2",param2);
              
      byte[] bytes = JasperRunManager.runReportToPdf(reportfile.getPath(), parameters,banco);
       response.setContentType("application/pdf");
    
       response.setContentLength(bytes.length);
       ServletOutputStream outputstream = response.getOutputStream();
       outputstream.write(bytes,0,bytes.length);
    outputstream.flush();
     outputstream.close();

quando eu executo ele na saida do netbeans aparece a mensagem dizendo:

out 10, 2016 3:37:29 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [jsp] in context with path [/WebControleEstoque] threw exception [An exception occurred processing JSP page /FuncTeste.jsp at line 56

53:        response.setContentType(application/pdf);

54:

55:        response.setContentLength(bytes.length);

56:        ServletOutputStream outputstream = response.getOutputStream();

57:        outputstream.write(bytes,0,bytes.length);

58:     outputstream.flush();

59:      outputstream.close();

Stacktrace:] with root cause
java.lang.IllegalStateException: getWriter() has already been called for this response

OBS: o meu banco de dados o campo esta como DATE
e o Report query esta assim:

SELECT
     *
FROM
ENTRADA_MATERIAL
WHERE
     DATA BETWEEN $P{data1} AND $P{data2}

O estranho é que se eu vou direto no ireport e executo o Preview e coloco o intervalo de datas funciona perfeitamente so nao funciona quando tento passa da paggina para o ireport.

Pelo pouco que eu entendo tenho que fazer alguma conversão

Estou enviando imagem pra ficar mais facil caso tenha ficado complicado



Criado 10 de outubro de 2016
Respostas 0
Participantes 1