2016-11-15 63 views
0

我已经写了一些老版本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道具总是空。

+0

我希望能够访问我在代码中的JRXML中设置的属性。 –

+0

我想答案是我不知道我在问什么。我需要做的是在JRXML中为各个元素设置属性,并在我的自定义导出器中使用它们以执行特定的操作。我将编辑该问题。 –

回答

1

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

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

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

你可以有几个net.sf.jasperreports.print.transfer.*性质,每个注册的前缀用于要复制到打印元素的属性。