Wstęp

Jeśli w raporcie chcemy wykorzystać więcej niż jedną kolekcję danych, lub jeśli chcemy wykorzystać obiekt DTO, który ma kolekcję jako jeden z atrybutów niezbędne będzie wykorzystanie subreportu.

Nie znasz podstaw Jaspera? patrz: JasperReports – szybki start

Tworzenie subreportu

Subreport to nic innego jak raport załączany do innego raportu. Tworzymy więc nowy plik .jrxml i formatujemy go tak jak chcemy aby wyglądała nasza załączana część raportu. Następnie kompilujemy go klikając ikonę młotka. W folderze z szablonem powstanie nowy plik z rozszerzeniem .jasper.

W szablonie, do którego chcemy załączyć subreport dodajemy w wybranym miejscu kod załączenia subreportu:

  • [3] – przykładowe przekazanie parametru do subreportu
  • [4] – parametr „moja_kolekcja” został zdefiniowany jako <parameter name=”moja_kolekcja” class=”java.util.Collection”/> a w przy wywoływaniu generacji raportu wrzucana jest do niego kolekcja danych. Można w tym miejscu wykorzystać również atrybut obiektu kolekcji głównej tj $F{kolekcja_obiektu}
  • [5] – ścieżka do skompilowanego subreportu. Należy pamiętać, że ma to być ścieżka widziana z perspektywy klasy generującej raport.

I to… tyle. :) Wskazana kolekcja będzie źródłem wejściowym dla subreportu więc atrybuty jej obiektów powinny być zdefiniowane jako pola Field w subreporcie. Nic nie stoi na przeszkodzie aby korzystać z kilku subreportów w jednym szablonie lub nawet zagnieżdżać je wielokrotnie.