【问题标题】:Jasper reports custom exporter reading propertiesJasper 报告自定义导出器读取属性
【发布时间】:2016-11-16 15:45:10
【问题描述】:

我已经为 Jasper 的旧版本编写了一些自定义导出器,但是版本 6 中的更改让我陷入了困境。我已经到了拥有 JasperPrint 对象并且可以遍历报表元素的地步,但是我在报表设计中设置的属性都不可用。由于 Jasper 多年来发生了巨大变化,因此搜索示例无济于事。

具体来说,我想要完成的是编写一个自定义导出器,它读取 JRXML 中单个元素上设置的属性并根据这些属性执行操作。我不确定需要采取哪些步骤才能使自定义导出器可以使用 JRXML 中的属性。

我的 jrxml 中的一个片段:

<staticText>
    <reportElement uuid="35d904d5-317f-4ea6-9d93-e50e5fc613b9" x="2" y="0" width="100" height="20">
        <property name="svg.t.data.ch" value="v"/>
    </reportElement>
    <textElement/>
    <text><![CDATA[Customer Name]]></text>
</staticText>

还有一段简化但功能强大的代码:

public class CustomExporter extends JRAbstractExporter<ReportExportConfiguration, ExporterConfiguration, ExporterOutput, JRExporterContext>{
...
@Override
public void exportReport() throws JRException   {
    JRPropertiesMap props = null;
    List<ExporterInputItem> items = exporterInput.getItems();

    for(ExporterInputItem item : items){
        jasperPrint = item.getJasperPrint();
        for(JRPrintPage page : jasperPrint.getPages()){
            for(JRPrintElement ele : page.getElements()){

                switch(ele.getOrigin().getBandTypeValue()){
                case COLUMN_HEADER:
                case GROUP_HEADER:
                case DETAIL:
                    props = ele.getPropertiesMap();
                    break;
                default:
                    break;
                }
            }
        }
    }
}

JRPropertiesMap 属性始终为空。

【问题讨论】:

  • 我希望能够在我的代码中访问我在 JRXML 中设置的属性。
  • 我想答案是我不确定我在问什么。我需要做的是在单个元素的 JRXML 中设置属性,并在我的自定义导出器中使用它们来执行特定操作。我将编辑问题。

标签: java jasper-reports


【解决方案1】:

设计(如在 JRXML 中)元素属性不会自动传输到打印元素,您需要配置一个全局属性来指示引擎复制具有给定前缀的属性。

例如,如果您想复制所有 svg.t.* 元素属性,则需要 jasperreports.properties 中的以下属性(或以编程方式设置)

net.sf.jasperreports.print.transfer.foo=svg.t.

您可以拥有多个net.sf.jasperreports.print.transfer.* 属性,每个属性都为要复制到打印元素的属性注册一个前缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2012-02-12
    • 1970-01-01
    • 2011-11-25
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多