空'关键'参数错误

时间:2010-08-10 08:11:24

标签: java charts jasper-reports ireport

我正在使用IReport 3.5.0,我的java GWT应用程序使用已编译的.jasper文件来创建报告。我正在java应用程序中创建数据源,并使用fillReport()方法填充报告。它工作正常,它填充了我在.jrxml和Java应用程序中定义的字段。

但是,我想使用这些字段来创建饼图,但它不起作用。我将工作字段作为图表的键和值表达式,但是当我运行应用程序时,它会给出错误java.lang.IllegalArgumentException: Null 'key' argument.我无法解决它,即使我将$V{PAGE_COUNT}作为关键表达式,它总是给出相同的'null key'错误。我被卡住了。谢谢你的帮助。

4 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。基本上JasperReport中的饼图讨厌null对象。错误消息没有多大帮助......

由于您已经检查了密钥表达式,因此请检查所有其他元素。我的错误出现在标签表达中!

如果您可以在IDE中运行应用程序,请在“IllegalArgumentException”上放置一个断点。它将帮助您找到根本原因。还要确保每次进行更改时报表都会重新编译jrxml。

另一种方法是从一个例子开始并修改它以一点一点地满足您的需要。你很快就会找到罪魁祸首!

顺便说一句,这与GWT无关,因为这一切都在服务器上运行。

答案 1 :(得分:3)

我和iReport 3.0有同样的问题 我使用条件来处理键表达式和值表达式的空值:

($F{FIELDEXPRESSION}!=null?$F{FIELDEXPRESSION}:"")

($F{FIELDVALUE}!=null?(new BigDecimal($F{FIELDVALUE})):(new BigDecimal("0")))

答案 2 :(得分:0)

我遇到了同样的问题。因此,使用if循环检查我正在遍历的列中是否存在空值。

  if(result.get()==null) // result is where is stored my resultset output
 {
    dataset.setValue(count.get(j),"N/A","No Data Available");} // count refers to the number of null entries
       else dataset.setValue(count.get(j),results.get(j),results.get(j)); 
   }

答案 3 :(得分:0)

由于我无法发表评论,这可能不是一个完整的解决方案。我通过检查字段的数据类型解决了我的问题。

我之前的位置:

<field name="date" class="java.sql.Date"/>

我改为:

<field name="date" class="java.lang.String"/>

因为我的字段会给我ex:“7月15日”(我在查询中提到的F​​YI)格式类型日期,不能是java.sql.Date类型。