xml - 使用 XML 数据源而不是空白页时没有数据时显示 Jasper 报告

标签 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>

最佳答案

为了避免这种情况,最好为细节区域定义一个printWhenExpression

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

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

  • 类型:java.lang.Integer
  • 计算:总和
  • 表达式:$F{StdntCd} == null ? 0:1
  • 初始值:0

假设如果提供了有效数据,StdntCd 字段永远不会为 null,这将使您始终获得正确的输出。

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

关于xml - 使用 XML 数据源而不是空白页时没有数据时显示 Jasper 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714671/

相关文章:

java - 如何在 JAXB MARSHALLING 期间修剪字符串

java - Jetty 曾经用于生产部署吗?

xslt - 测试 ="element[@attribute]"在 XSLT 中起什么作用?

html - 在Excel vba中实现HTMLBaseElement

android - 解析 CDATA 标签内的 xml (Android)

php - 从 Json 获取或提取数据到 php 并插入到 mysql 数据库

java - 我应该使用 Quartz XML 作业文件还是使用代码配置作业

azure - 从 .NET Core 1.1.1 升级到 .NET Core 1.1.2 后,Azure 上的 ASP.NET Core 网站无法启动并出现 502.5 错误

web-applications - 使用 Erlang 的网站和 Web 应用程序

java - 当我之前使用过 XPathConstants.BOOLEAN 时,如何在 dom 解析器中输出 Java NODE?