2012-11-10 4 views
5

Ich habe einen Jaspis (Master) Bericht in einem Glas einbetten. Der Bericht stammt von einem Java-Eingabestream. Der Jaspis-Bericht wird erstellt von iReport 3.7.0Wie man JasperReport Sub-Bericht in ein Glas einbetten

In diesem Masterbericht gibt es einige Unterberichte. Im Moment muss ich

Subreport Ausdruck verwenden: $ P {SUBREPORT_DIR} + "\\ SubReport.jasper"

Expression Klasse: java.lang.String

im iReport zu machen es funktioniert . Das bedeutet, dass ich die Datei subReport.jasper im Ordner SUBREPORT_DIR ablege.

Meine Frage ist, wie diese Sub-Berichte im Jar wie der Master-Bericht einbetten? Und was sollte den "Default Value Expression" ausfüllen? (Wenn es gebraucht wird)

Die nächste Frage und Antwort bisher habe ich gesehen ist hier

How to load subreport resources with Jasper?

jedoch die Antwort auf mich für Master-Report-Kompilierung nicht ausreichend ist. Es gibt eine Fehlermeldung, die fehlenden Unterbericht beim Kompilieren sagt (und deshalb denke ich, dass der Standardausdruck möglicherweise benötigt wird?)

Vielen Dank!

Antwort

5

zum Beispiel: Ich habe Bericht und Unterbericht, in einigen * .jar-Datei befindet. subreport aufzurufen i gesetzt subreport Ausdruck

getClass().getResource("/path/to/my/report/in/a/jar/subreport.jasper").openStream() 

und subreport Ausdruck Klasse java.io.InputStream

es funktioniert wählen!

0

Ich habe eine mögliche Lösung in einer answer in einer anderen Frage beschrieben. Die Frage ist nicht identisch, aber die Lösung löst dieses Problem auch.

Diese Lösung verwendet Feder, aber das Ersetzen federspezifischer Teile (FileSystemResourceLoader) durch Class.getResourceAsStream() sollte kein allzu großes Problem darstellen.