Page tree
Skip to end of metadata
Go to start of metadata

Scriptlets bieten ein mächtiges Werkzeug, durch selbst angefertigte Java Klassen Einfluss auf die Ausführung eines Reports/Formular zu nehmen. Zur Erstellung eines einfachen Scriptlets genügt es von net.sf.jasperreports.engine.JRDefaultScriptlet abzuleiten. In dieser Klasse sind die zahlreichen Funktionsrümpfe der Klasse net.sf.jasperreports.engine.JRAbstractScriptlet durch leere Methoden implementiert. Sie können dann diejenigen Methoden, welche sie wirklich benötigen, mit Ihrem eigenen Inhalt überschreiben. Einen Überblick zu den Funktionen gibt es hier: JRDefaultScriptlet (JasperReports API) (sourceforge.net).

Eine schrittweise Anleitung zur Anfertigung eines Scriptlets und Verwendung in Jaspersoft Studio kann im JasperReports Ultimate Guide wunderbar nachvollzogen werden.

Daher werden hier nur die Eckpunkte und Besonderheiten in Bezug auf Nuclos erläutert.

Ablauf

  • Scriptletclass erstellen und als Jar packen
  • Scriptlet in Jaspersoft Studio testen
  • Scriptlet in Nuclos als Extension einbinden


Scriptlet-Class erstellen

  • Ein Java-Library-Projekt erstellen
  • Alle selbst erstellten Klassen sollten sich in einem Package befinden.
  • Aktuelles JDK verwenden
  • Jasperreport-6.17.0.jar als abhängige Library hinzufügen
  • Andere Abhängigkeiten hinzufügen

Scriptlet in Jaspersoft Studio testen

Das Scriptlet sollte erst in Nuclos eingebunden werden, wenn es sicher funktioniert! Über die Preview in Jaspersoft Studio kann die zukünftige Verwendung getestet werden. Dafür müssen zunächst die Klasse(n) dem Classpath von Jaspersoft Studio bekannt gemacht werden. Unter Extras -> Optionen - > Tab: Classpath fügt man mit add Jar das Archiv seines Scriptlets hinzu (xyz.jar). Zusätzlich sollte hier das Häkchen für reloadable gesetzt werden, damit auch jegliche Änderungen wirksam werden. An dieser Stelle müssen auch die abhängigen Libraries hinzugefügt werden, auch die jasperreports-7.16.0.jar.

Wenn es sich um nur ein Scriptlet handelt, wird lediglich der Klassenname (vollständiger: com.package.klasse) unter den Eigenschaften des Dokumentes beim Property "Scriptlet Class" eingetragen. Nach dem Speichern findet sich der Klassenname an allen wichtigen Stellen.( Scriptlet -> Report, $P{REPORT_SCRIPTLET}).

Je nachdem, was das Scriptlet ausführen soll bzw. mittels ihre definierten Funktion zurückgibt, wird die entsprechende Komponente aus der Palette ausgewählt (Image, TextField). Im Image/Text Expression unter den Eigenschaften wird die Methode über den Parameter aufgerufen ($P{REPORT_SCRIPTLET}.methodexy()).

In Jaspersoft Studio 6.17.0 ist ein Bug, welcher bewirkt, dass Reporte mit Scriptlets nicht korrekt kompilieren. Wenn Sie Reporte mit Scriptlets in Jaspersoft Studio testen wollen, müssen Sie daher entweder ein Version zurück gehen oder prüfen, ob es mittlerweile eine neuere Version ohne dieses Problem gibt.


Scriptlet in Nuclos einbinden

Damit Reporte, welche das Scriptlet verwenden, unter Nuclos funktionieren, müssen die Scriptlets als serverseitige Extensions eingebunden werden. Wie dies genau funktioniert, ist im Kapitel Jasper Extensions in Nuclos beschrieben.


  • No labels

1 Comment

  1. Die Links zu Jasperreports haben sich geändert, habe sie angepasst.