我的情况是,当我无法使用我的查询检索任何内容时(在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
���
!)\�!\�\\
答案 0 :(得分:3)
设置jasperReport
代码whenNoDataType="NoPages"
或删除whenNoDataType
属性(默认为&#34; NoPages&#34;)
检查JasperPrint
中有多少页,如果 0 您有 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
}