0
是否有可能以任何方式將報表參數(輸入控件)傳遞給報表引擎之前進行轉換?Jasper報告 - 在將它傳遞給報告引擎之前進行參數轉換?
我舉個例子。我使用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中爲此參數定義一個輸入控件,並且我希望它是日期類型,因此用戶可以從日曆中進行選擇。
那麼,有沒有什麼辦法(scriptlet或其他)來轉換提供的參數,然後它傳遞給報表引擎? (在這種情況下日期爲數值,XPath可以工作)
嗯...這看起來像一個有效的主意,但它仍然沒有working.' \t <參數名稱=「dateTimeValue」級=「java.math中。 BigDecimal的」 isForPrompting = 「假」> \t \t<![CDATA [新的BigDecimal(新的SimpleDateFormat(@ 「YYYYMMDDHHMMSS」)格式($ P {dateTimePrompt}));]]> defaultValueExpression> \t \t \t \t defa ultValueExpression> \t '這就是我所做的,因爲正如我所說的,我不能使用字符串,XPath不會使用運算符進行比較:(>,< ,> =,<=)。我得到「文檔沒有頁面」 –
Less
好吧,似乎參數順序很重要。提示符應該首先放在.jrxml中。它現在有效,非常感謝。 – Less