2015-11-09 2 views
1

Моя ситуация в том, что я не могу получить что-либо с моим запросом, который находится внутри файла jasper, отчет все еще генерируется.Как проверить пустой отчет в JasperReports?

Я использую эту строку кода для создания отчета.

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReportStream, params, jdbcConnection); 
long start = System.currentTimeMillis(); 
Exporter jrExporter = getJRExporter(format, jasperPrint, baos); 
jrExporter.exportReport(); 
bytes = baos.toByteArray(); 

Есть ли способ использовать объект-экспортер для обнаружения, если мой отчет пуст? Я попытался проверить null, используя byteArray, а затем преобразован в String при создании формата pdf.

Однако я не могу легко проверить, если ByteArray, является недействительным, поскольку он производит этот выход, несмотря не возвращая никаких результатов от моего запроса:

%PDF-1.4 
%���� 
1 0 obj <</Length 45/Filter/FlateDecode>>stream 
x�3P0T�5T0P0�4�ɹ\�\N!\�f 
��� 
!)\�!\�\\ 
+0

Вы можете избежать этой проблемы, установив whenNoDataType = "AllSectionsNoDetail" в свойстве отчета – sanBez

ответ

2

Набор на jasperReport тег whenNoDataType="NoPages" или удалить whenNoDataType атрибут (по умолчанию «NoPages»)

Проверьте, сколько страниц есть в JasperPrint, если у вас есть NoData

JasperPrint print = JasperFillManager.fillReport(jasperReportStream, params, jdbcConnection); 
    List<JRPrintPage> pages = print.getPages(); 
    if (pages.size()==0){ 
      //No pages, do not export instead do other stuff 
    } 
+0

Привет, Петтер, я попытался использовать параметр 2, и он по-прежнему возвращает размер страницы 1, несмотря на отсутствие результата запросов в отчете Jasper. Это потому, что формат pdf возвращает мусор, несмотря на отсутствие результатов запроса? – Loren

+0

С помощью этого решения вы не проверяете PDF, но JasperPrint обязательно установите атрибут whenNoDataType = «NoPages». Примечание: они не являются параметрами, но последовательность, я удалил 1 и 2, поэтому ответ более ясен. –

+0

Я пробовал, когдаNoDataType = «NoPages», и pdf все еще выпущен, несмотря на отсутствие результата. Кстати, спасибо за ответ. – Loren

Смежные вопросы