2016-11-15 4 views
0

Ich habe ein paar benutzerdefinierte Exporteure für ältere Versionen von Jasper geschrieben, aber die Änderungen in Version 6 werfen mich für eine Schleife. Ich bin an den Punkt gelangt, an dem ich ein JasperPrint-Objekt habe und die Berichtselemente durchgehen kann, aber keine der Eigenschaften, die ich im Berichtsentwurf festgelegt habe, ist verfügbar. Da sich Jasper im Laufe der Jahre stark verändert hat, hilft die Suche nach Beispielen nicht.Jasper meldet benutzerdefinierte Exporter lesen Eigenschaften

Speziell, was ich erreichen möchte, ist ein benutzerdefinierter Exporteur zu schreiben, der Eigenschaften liest, die für einzelne Elemente in JRXML festgelegt sind, und Aktionen basierend auf diesen Eigenschaften ausführt. Ich bin mir nicht sicher, welche Schritte ich unternehmen muss, um die Eigenschaften in JRXML für den benutzerdefinierten Exporteur verfügbar zu machen.

Ein Schnipsel aus meinem 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> 

und eine vereinfachte, aber funktional Stück Code:

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; 
       } 
      } 
     } 
    } 
} 

Die JRPropertiesMap Requisiten ist immer null.

+0

Ich möchte in meinem Code auf die Eigenschaften zugreifen können, die ich in JRXML eingestellt habe. –

+0

Ich denke, die Antwort ist, ich bin mir nicht sicher, wonach ich frage. Was ich tun muss, ist, Eigenschaften in JRXML für einzelne Elemente festzulegen und sie in meinem benutzerdefinierten Exportprogramm zu verwenden, um bestimmte Aktionen auszuführen. Ich werde die Frage bearbeiten. –

Antwort

1

Design (wie in JRXML) -Elementeigenschaften werden nicht automatisch an Druckelemente übergeben. Sie müssen eine globale Eigenschaft konfigurieren, um die Engine anzuweisen, Eigenschaften mit einem angegebenen Präfix zu kopieren.

Wenn Sie zum Beispiel möchten alle svg.t.* Elementeigenschaften zu kopieren, müssen Sie die folgende Eigenschaft in jasperreports.properties (oder programmatisch eingestellt)

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

Sie mehrere net.sf.jasperreports.print.transfer.* Eigenschaften haben können, die Registrierung jeder ein Präfix für Eigenschaften, die auf Druckelemente kopiert werden sollen.

Verwandte Themen