我的情况是,当我无法通过jasper文件中的查询检索任何内容时,仍会生成报告。
我正在使用这一行代码来生成报告。
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();
有没有一种方法可以使用导出器对象检测我的报告是否为空?我尝试使用byteArray验证null,然后在生成pdf格式时将其转换为String。
但是我不能轻易检查byteArray是否为null,因为尽管我的查询没有返回任何结果,但它仍会产生以下输出:
%PDF-1.4 %���� 1 0 obj <</Length 45/Filter/FlateDecode>>stream x�3P0T�5T0P0�4�ɹ\�\N!\�f ��� !)\�!\�\\
在jasperReport标签上设置whenNoDataType="NoPages"或删除whenNoDataType属性(默认为“ NoPages”)
jasperReport
whenNoDataType="NoPages"
whenNoDataType
检查中有多少页JasperPrint,如果为 0 ,则表示 NoData
JasperPrint
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 }