我有一个Jasper报告,它是从我的网络应用程序调用并执行存储过程来获取其数据。存储过程适用于SQL Developer和iReports Studio(5.1),但在构建和部署之后,当我从JSP前端调用报表时,它只返回一个空白的pdf。
日志文件表明参数已正确发送,但Jasper库的JRVerticalFiller
类没有数据。
conn = dataSource.getConnection();
parameters.put("REPORT_CONNECTION", conn);
parameters.put("SUBREPORT_DIR", propsUtil.getReportsRootpath());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
JRPdfExporter jrPdfExporter = new JRPdfExporter();
jrPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
//etc ...
jrPdfExporter.exportReport();
任何建议都将不胜感激。
答案 0 :(得分:0)
我找到了问题的原因。存储过程中定义的参数名称,JRXML和Java类中的参数名称都必须相同。在我的例子中,Java类使用MIN_DATE和MAX_DATE,而storedproc和JRXML使用minDate和maxDate。
难怪数据没有被退回!