在新页面上启动 JasperReport 子报表,但在作为主报表启动时不启动

Start JasperReport subreport on new page, but not when launched as main report

我有一个名为 'Receipt' 的 JasperReport 可以启动为:

当它用作子报表时,如何在任何收据之前开始一个新页面,但如果没有收据则抑制新页面?

设置isTitleNewPage="true"在子报表情况下有效,但在用作主报表时导致Detail band显示在第二页。

在子报表之前使用 Break 意味着如果没有收据则使用冗余页面。

我通过以下方式解决了它:

  1. 向报表添加布尔 isSubReport 参数

  2. 在 Detail band 中,添加一个 Break,并将 Print When Expression 设置为:

    $V{PAGE_NUMBER} == 1 && $P{isSubReport}
    
  3. 在父报表中,传递值为TRUE()的参数isSubReport

感觉应该有一个更简洁的解决方案,但它似乎有效。