【发布时间】: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