JasperReports 无法呈现时间序列图表,并出现错误“null 'period' argument”

问题描述 投票:0回答:2

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

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

从报告本身(详细信息带),我可以确认所有“日期”字段都是非空的。我的时间序列图的设置如下:

  • 时间段:白天
  • 时间段表达:
    $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)
...

我什至尝试将“时间段表达式”设置为表达式

(null == $F{date} ? "foo" : $F{date})
,只是为了看看是否可以让它以不同的方式失败(如
ClassCastException
),但它仍然失败并显示相同的消息。

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

我正在使用 Jasper Studio 6.4.0,如果这有什么区别的话。

charts jasper-reports time-series
2个回答
1
投票

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

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

在安排了每一个可能的

null
处理后,仍然没有成功。所以我尝试将“TimePeriod”设置更改为“”只是为了看看会发生什么。没有变化,但返回编辑图表,我注意到“Day”仍然是“TimePeriod”参数的设置。奇怪。

我很想要日级别的报告,但我抓住了救命稻草,所以我将 TimePeriod 更改为“Week”,报告运行成功。

然后,我将“TimePeriod”从“Week”更改回“Day”,它运行时没有错误。所以也许默认的“TimePeriod”设置实际上是

<NULL>
,但 Jasper Studio 将其显示为“Day”,而实际上不是?我不知道。但尝试将 TimePeriod 更改为其他内容,然后更改为您真正想要的。


0
投票

如果您连接了数据适配器,请尝试单击“测试连接”来刷新它。

© www.soinside.com 2019 - 2024. All rights reserved.