我使用 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>
答案 0 :(得分:3)
为了避免这种情况,最好为细节带定义printWhenExpression
。
printWhenExpression
修改为$F{StdntCd} != null
:这将仅显示具有null
以外代码的学生。
如果您使用REPORT_COUNT
变量,则需要添加自定义变量:
java.lang.Integer
Sum
$F{StdntCd} == null ? 0 : 1
0
如果提供有效数据,假设字段StdntCd
永远不会是null
,这将允许您始终输出正确的输出。
如果您的报告使用的语言与groovy不同,则可能需要调整表达式。