JasperReport setParameter()已弃用?

时间:2017-09-01 14:56:44

标签: 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();
}

我查看了SourceForge页面,可以看到它已被 ExporterInput ExporterConfiguration ExporterOutput 取代但我不确定如何将它们全部用于实现所需的输出。

1 个答案:

答案 0 :(得分:3)

等效代码看起来像这样:

(define (domain blocly)
    (:predicates
        (espacio ?e)  
        (ficha ?t)  
        (sobre ?t ?t)  
        (en ?t ?e)
        (arriba ?t ?e)
        (vacio ?e)  
        (libre ?t)
    )  

    (:action movefichaficha
        :parameters (?ficha ?ficha2 ?ficha3 ?from ?to)
        :precondition
            (and
                (ficha ?ficha)
                (ficha ?ficha2)
                (ficha ?ficha3)
                (espacio ?from)
                (espacio ?to)
                (sobre ?ficha ?ficha2)
                (libre ?ficha)
                (libre ?ficha3)
                (en ?ficha ?from)
                (en ?ficha2 ?from) 
                (en ?ficha3 ?to)
            )
        :effect
            (and
                (sobre ?ficha ?ficha3)
                (en ?ficha ?to)
                (libre ?ficha2)
                (not (sobre ?ficha ?ficha2))
                (not (libre ?ficha3))
                (not (en ?ficha ?from))
            )
    )

    (:action movefichaesp
        :parameters (?ficha ?ficha2 ?from ?to)
        :precondition
            (and
                (ficha ?ficha)
                (ficha ?ficha2)
                (espacio ?from)
                (espacio ?to)
                (sobre ?ficha ?ficha2)
                (vacio ?to)
                (en ?ficha ?from)
                (en ?ficha2 ?from)
            )
        :effect
            (and
                (libre ?ficha2)
                (en ?ficha ?to)
                (arriba ?ficha ?to)
                (not (vacio ?to))
                (not (en ?ficha ?from))
                (not (sobre ?ficha ?ficha2))
            )
    )

    (:action moveoespficha
        :parameters  (?ficha ?ficha2 ?from ?to)
        :precondition
            (and
                (ficha ?ficha)
                (ficha ?ficha2)
                (espacio ?from)
                (espacio ?to)
                (libre ?ficha)
                (libre ?ficha2)
                (en ?ficha ?from)
                (en ?ficha ?to) 
            )
        :effect
            (and
                (vacio ?from)
                (en ?ficha ?to)
                (sobre ?ficha ?ficha2)
                (not (libre ?ficha2))
                (not (en ?ficha ?from))
                (not (en ?ficha ?from))
            )
    )
)

请注意,旧的API允许您执行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(); 之类的操作。问题在于CSV导出器实际上并未使用该参数,只有文本导出器正在查看csvExporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT)。使用新的API,您可以清楚地了解每个导出器可以执行的设置/配置。