2012-11-10 18 views
5

Mam raport jaspisowy (główny) osadzony w słoiku. Raport jest pobierany ze strumienia wejściowego Java. Raport jaspisowy jest tworzony przez iReport 3.7.0Jak osadzić podraport JasperReport w słoiku

W tym raporcie głównym znajduje się kilka pod-raportów. W tej chwili muszę używać

Podraport Expression: $ {P} SUBREPORT_DIR + "\\ SubReport.jasper"

Expression Klasa: java.lang.String

w iReport, aby to działa . Oznacza to, że przechowuję plik subReport.jasper w folderze SUBREPORT_DIR.

Moje pytanie brzmi: jak umieścić te raporty podrzędne w słoiku, tak jak w raporcie głównym? A co powinno wypełnić "Wyrażenie wartości domyślnej"? (Jeśli jest to konieczne)

Najbliżej pytań i odpowiedzi do tej pory widziałem tu jest

How to load subreport resources with Jasper?

Jednak odpowiedź nie jest wystarczająca do mnie głównym raporcie kompilacji. Podczas kompilacji pojawia się komunikat o błędzie informujący o brakującym raporcie podrzędnym (i dlatego myślę, że może być potrzebne wyrażenie wartości domyślnej?)

Dziękuję bardzo!

Odpowiedz

5

Na przykład: Mam raport i podraport, znajdujący się w pliku * .jar. powołać podraport i ustawić wyraz Podraport

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

i wybierz Podraport ekspresji klasy java.io.InputStream

to działa!

0

W innym pytaniu opisałem jedno możliwe rozwiązanie w answer. Pytanie nie jest identyczne, ale rozwiązanie rozwiązuje również ten problem.

To rozwiązanie wykorzystuje sprężynę, ale zastąpienie części specyficznych dla sprężyny (FileSystemResourceLoader) parametrem Class.getResourceAsStream() nie powinno być zbyt dużym problemem.