JasperReport setParameter() 已弃用?

gre*_*ree 4 java jasper-reports

我最近将我的项目的 Jasper Reports 库从3.7.6升级到6.0.0。我终于可以构建 Maven,并且报告运行得很好。但是,setParameter()函数似乎在各个版本之间已被弃用,并且我不确定如何重构我的代码以适应这种情况。

已弃用的代码示例:

private static void exportMultipleToCSV(Collection<JasperPrint> jasperPrints, OutputStream baos) throws JRException {
    JRCsvExporter csvExporter = new JRCsvExporter();

    csvExporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrints);
    csvExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);
    csvExporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, Integer.valueOf(1500000));
    csvExporter.setParameter(JRTextExporterParameter.PAGE_WIDTH, Integer.valueOf(40000000));
    csvExporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, Integer.valueOf(4));
    csvExporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, Integer.valueOf(15));

    csvExporter.exportReport();
}
Run Code Online (Sandbox Code Playgroud)

我浏览了SourceForge页面,可以看到它已被ExporterInputExporterConfigurationExporterOutput取代,但我不确定如何一起利用它们来实现所需的输出。

dad*_*a67 5

等效的代码看起来像这样:

JRCsvExporter csvExporter = new JRCsvExporter();
//jasperPrints is Collection, but we need a List
csvExporter.setExporterInput(SimpleExporterInput.getInstance(new ArrayList(jasperPrints)));
csvExporter.setExporterOutput(new SimpleWriterExporterOutput(baos));
SimpleCsvExporterConfiguration exporterConfiguration = new SimpleCsvExporterConfiguration();
//nothing to set here, but you could do things like exporterConfiguration.setFieldDelimiter
csvExporter.setConfiguration(exporterConfiguration);
csvExporter.exportReport();
Run Code Online (Sandbox Code Playgroud)

请注意,旧的 API 允许您执行诸如csvExporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT). 问题在于 CSV 导出器实际上并未使用该参数,只有文本导出器正在查看JRTextExporterParameter.PAGE_HEIGHT. 使用新的 API,您可以清楚地了解每个导出器可以执行哪些设置/配置。