【问题标题】:JasperReport - Open second time without dataJasperReport - 在没有数据的情况下第二次打开
【发布时间】:2015-11-17 04:34:32
【问题描述】:

我正在开发一个 Java Swing 应用程序,其中可以生成一个包含一些变量数据的报告和一个包含测量值的子报告。

第一次调用该操作时,报告按预期生成并正确显示在 JasperViewer 中。但如果再次调用相同的动作,则只显示静态数据。不会产生其他任何东西。

以下代码显示了生成报告的操作:

@Override
public void actionPerformed(ActionEvent e)
{
    try
    {
        InputStream jasperStream = this.getClass().getClassLoader().getResourceAsStream(jasperReport);

        MeasurementSubReport measurementReport = new MeasurementSubReport(
            reportService.loadReportColumns(),
            reportService.loadMeasuredValues(),
            reportService.loadStatisticValues());
        JasperReport subreport = JasperCompileManager.compileReport(measurementReport.createSubReport());

        Map<String, Object> hm = new HashMap<>();
        hm.put("MEASURE_DATASOURCE", new JREmptyDataSource());
        hm.put("MEASURE_SUBREPORT", subreport);
        hm.put(JRParameter.REPORT_LOCALE, Locale.getDefault());
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, hm, reportDataBean);

        JasperViewer viewer = new JasperViewer(jasperPrint, false);
        viewer.setTitle(BUNDLE.getString("JasperReportAction.viewer.title"));
        viewer.setVisible(true);
    }
    catch (Exception ex)
    {
        ErrorDialog.showError(BUNDLE.getString("JasperReportAction.error.txt"), ex);
    }
}

JasperReports 似乎正在缓存一些生成的代码。这个对吗?如何防止缓存?

【问题讨论】:

    标签: java caching jasper-reports


    【解决方案1】:

    我有类似的代码,没有缓存问题,现在我猜一些,因为reportDataBean 在代码中不可见。

    我猜你的reportDataBeanJRDatasource 如果是JRRewindableDataSource 你需要倒带moveFirst(),因为它会在你第一次执行报告后结束。

    如果不是JRRewindableDataSource,则需要重新创建它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多