簡體   English   中英

Jasper報告-將參數傳遞到報告引擎之前進行參數轉換?

[英]Jasper reports - parameter transformation before passing it to report engine?

在將報告參數(輸入控制)傳遞給報告引擎之前,是否可以通過任何方式進行轉換?

我舉一個例子。 我使用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

這樣就可以了,我可以得到想要的,但是date屬性有點問題,因為我需要將它表示為一個數字以進行比較。 可以看出,為了將日期與純數字進行比較,我需要去除所有非數字字符(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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM