使用XML数据源时没有数据时显示Jasper Report非空白页面

时间:2013-02-05 18:48:23

标签: xml web-applications xpath jasper-reports ireport

我使用 Jasper 作为报告引擎(使用 iReport -4.0.0)
我的数据源是 XML文件数据源,并在填写报告时使用 XPath 表达式 例如
样本数据

<StudentList>
<Student>   
    <StdntCd>cd11</StdntCd>
    <StdntNm>ee11</StdntNm>
    <Schl>Schl11</Schl>
    <Cty>Cty11</Cty>
</Student>
<Student>   
    <StdntCd>cd22</StdntCd>
    <StdntNm>ee22</StdntNm>
    <Schl>Schl22</Schl>
    <Cty>Cty22</Cty>
</Student>
</StudentList>

我的XPath表达式是

/StudentList/Student

问题发生时没有数据

<StudentList>

</StudentList>  

我需要显示没有详细信息的报告的所有部分(因为没有数据)
虽然我将“当没有数据”属性设置为“所有部分,没有详细信息”
但仍然没有工作
注意
没有数据等同于之前的XML 不喜欢

<StudentList>
 <Student></Student>
</StudentList>

1 个答案:

答案 0 :(得分:3)

为了避免这种情况,最好为细节带定义printWhenExpression

在iReport中:在详细信息区域中单击报表检查器,在属性面板中将printWhenExpression修改为$F{StdntCd} != null:这将仅显示具有null以外代码的学生。

如果您使用REPORT_COUNT变量,则需要添加自定义变量:

  • 输入:java.lang.Integer
  • 计算:Sum
  • 表达:$F{StdntCd} == null ? 0 : 1
  • 初始值:0

如果提供有效数据,假设字段StdntCd永远不会是null,这将允许您始终输出正确的输出。

如果您的报告使用的语言与groovy不同,则可能需要调整表达式。