JasperReports无法呈现错误的时间序列图表" null' period'参数"

时间:2017-10-11 13:48:56

标签: charts jasper-reports time-series

我有一个相对简单的查询,每行返回3个数据字段,并带有日期。像这样:

SELECT DATE(date) AS date, val1, val2
FROM tables
WHERE ...

从报告本身(细节带),我可以确认所有" date"字段是非NULL。我的时间序列图表的设置如下:

  • TimePeriod:Day
  • 时间段表达式:$F{date}
  • (系列)价值$F{val2} - $F{val2}

我得到的错误是:

java.lang.IllegalArgumentException: Null 'period' argument.
at org.jfree.chart.util.ParamChecks.nullNotPermitted(ParamChecks.java:65)
at org.jfree.data.time.TimeSeriesDataItem.<init>(TimeSeriesDataItem.java:99)
at org.jfree.data.time.TimeSeries.addOrUpdate(TimeSeries.java:887)
...

我甚至试过设置&#34;时间段表达&#34;到表达式(null == $F{date} ? "foo" : $F{date})只是为了看看我是否能以不同的说法(如ClassCastException)使其失败,但它仍然会失败并显示相同的消息。

$F{date}的数据类型为java.sql.Date,其他两个字段的数据类型为java.lang.Long

我使用Jasper Studio 6.4.0,如果这有任何区别的话。

1 个答案:

答案 0 :(得分:1)

我可能已找到答案,看起来它可能是JasperReports中的一个错误。

我在发布之前在网上搜索了这个问题的答案,并且大多数问题都没有得到答复,或者回答是“发生在我身上”或“对我有用”而没有任何真正的答案。

在安排处理每个可能的null之后,它仍然无法正常工作。所以我尝试将“TimePeriod”设置更改为“”只是为了看看会发生什么。没有变化,但回去编辑图表,我注意到“Day”仍然是“TimePeriod”参数的设置。怪异。

我真的想要日级报告,但我抓住了吸管,所以我将TimePeriod更改为“Week”,报告成功运行。

然后,我将“TimePeriod”从“Week”更改回“Day”,并且它正在运行而没有错误。因此,默认的“TimePeriod”设置实际上可能是<NULL>,但Jasper Studio显示为“Day”,但实际上并非如此?我不知道。但是尝试将TimePeriod更改为其他内容,然后更改为您真正想要的内容。