【问题标题】:Calling stored procedure from web app Jasper report returns no data从 Web 应用程序 Jasper 报告调用存储过程不返回任何数据
【发布时间】:2015-06-19 17:24:27
【问题描述】:

我有一个 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();

任何建议将不胜感激。

【问题讨论】:

  • 这个给定的信息很难说,是否可以共享代码spinet?
  • 您能否检查路径是否正确:propsUtil.getReportsRootpath(),尝试仅打印一些静态内容,看看是否有效。如果您使用的是jrxml,请尝试在文件中仅包含一些静态内容。
  • getReportsRootPath 返回正确的文件夹位置。从单步执行 jasper 源代码开始,日志语句显示没有数据。这很奇怪,因为在 SQL Developer 中运行存储过程确认有数据。
  • 确保传递的连接对象被正确初始化

标签: java jsp stored-procedures jasper-reports


【解决方案1】:

我找到了问题的原因。存储过程中定义的参数名称、JRXML 和 Java 类中的参数名称都必须相同。在我的例子中,Java 类使用了 MIN_DATE 和 MAX_DATE,而 storedproc 和 JRXML 使用了 minDate 和 maxDate。

难怪没有返回数据!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2015-12-04
    • 2011-03-21
    • 2012-10-23
    相关资源
    最近更新 更多