如何从 java 代码中检索报表变量,以检查报表是否没有页面?

How to retrive a report variable from java code, to check if report has no pages?

谁能解释一下如何从我的 java 代码中检索报告的 REPORT_COUNT 变量值?。

我需要该值,因为我想在报告没有页面时显示我自己的消息,并且在那种情况下我不想显示空的查看器。

你问如何获取报告变量,这是如何:

//Create a base filler
JRBaseFiller filler = JRFiller.createFiller(DefaultJasperReportsContext.getInstance(),report);
//Fill the report
JasperPrint jasperPrint = filler.fill(map, connection);
//Get the variables / parameter from the filler
Object rc = filler.getVariableValue("REPORT_COUNT");
int count = 0;
if (rc instanceof Number){
  count = ((Number)rc).intValue();
}

但是,检查您是否有页面的最简单方法是:

jrxml 中的 jasperReport 标签上设置属性 whenNoDataType="NoPages"。如果您的数据源为空,此属性将确保返回空报告(0 页)。 (参见 whenNoDataType 属性)

并在 java.

//jasperPrint is the JasperPrint object retrieved after fill
List<JRPrintPage> pages = jasperPrint.getPages();
if (pages.size() == 0) {
    // No pages
}