java - Jasper 报告 - 在将参数传递给报告引擎之前进行参数转换?

标签 java xml jasper-reports ireport jasperserver

在将报表参数(输入控件)传递到报表引擎之前,是否可以以任何方式对其进行转换?

我举个例子。我使用 XML 作为数据源:

<Results>
    <Object Id="0042" Val="dfg0bb" DateTime="2011-09-30T22:00:04Z" />
    <Object Id="0097" Val="abf0cc" DateTime="2011-09-30T22:00:06Z" />
    ...
</Results>

这是我的 XPath 查询:

//Object[translate(translate(translate(translate(@DateTime, '-', ''), ':', ''), 'T', ''), 'Z', '') <= $P{dateTimeValue}]

字段说明为:

@Id, @DateTime, @Val

这工作正常,我得到了我想要的,但是日期属性是一个问题,因为我需要将它表示为数字以进行比较。可以看出,我需要去掉所有非数字字符,以便将日期作为普通数字进行比较(Java 中 XPath 1.0 的限制)。此外,我想在JasperServer中定义这个参数的输入控件,并且我希望它是日期类型,以便用户可以从日历中选择。

那么,在将提供的参数传递给报表引擎之前,有什么方法(脚本或其他东西)可以对其进行转换吗? (在本例中日期为数值,以便 XPath 可以工作)

最佳答案

您需要使用的想法是一个参数可以具有基于另一个参数的默认值。提示用户输入“MyDate”,然后将其转换为“StringBasedOnMyDate”以在 XPath 查询中使用。它在 .jrxml 中看起来像这样:

<parameter name="MyDate" class="java.util.Date" isForPrompting="true">
  <defaultValueExpression><![CDATA[]]></defaultValueExpression>
</parameter>
<parameter name="StringBasedOnMyDate" class="java.lang.String" isForPrompting="false">
  <defaultValueExpression><![CDATA[new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format($P{MyDate})]]></defaultValueExpression>
</parameter>

关于java - Jasper 报告 - 在将参数传递给报告引擎之前进行参数转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8154319/

相关文章:

java - Ant/构建 JAR : Build failed, 未找到引用任务.路径

import - 访问/导入 jrxml 中的用户定义的类

java - 使用 Wicket 实现 AJAX 和数据库操作

java - JAXRS 2.0 客户端 : FOLLOW_REDIRECTS property doesn't work

java - 如何在java中处理twilio短信状态回调

objective-c - 将 NSString 转换为 Base64 数据以进行 XML 序列化

xml - 使用 XSLT 重命名节点

java - 在 Jenkins 中使用 Eclipse Compiler 获取编译器警告/错误

jasper-reports - 尽管查询有效,但Jasper iReport表返回空文档

java - 贾斯珀 : Compiling same jrxml file into multiple output formats