iReport - Variable - String [] - 初始值表达式

时间:2012-01-09 22:51:32

标签: variables jasper-reports expression ireport

我今天在iReport中发现我无法使用通常有效的Java语法设置String []的初始值表达式,例如:

private String[] fruitNames = new String[] {"Apple", "Banana"};

将其外推到iReport变量中就像这样简单(我想):

名称 :fruitNames

VariableClass :java.lang.String []

计算 :没有

重置类型 :报告

IncrementType :无

初始值表达式 :new String [] {“Apple”,“Banana”}

编译我的报告模板我收到错误:

  

编译异常:com.jaspersoft.ireport.designer.compiler.ErrorsCollector@683896bd> net.sf.jasperreports.engine.JRException:编译报表表达式时遇到错误c> lass file:org.codehaus.groovy.control .MultipleCompilationErrorsException:启动失败:> calculator_Fruits_1326149102402_537017:281:意外令牌:Apple @第281行,第55列。> 1错误

在用于设置初始值的代码编辑器中,我注意到解析器用红色下划线括号{}。这是有道理的,因为iReport将这些大括号解释为param,field或variable标识符。所以我看到冲突可以存在的地方,但是有没有人知道在初始值表达式字段中用于初始化String []的正确语法?

注意:我通过在Scriptlet中设置值来解决这个问题,但我真的很想知道正确的语法,如果存在的话。

2 个答案:

答案 0 :(得分:1)

您应该可以通过将变量类设置为java.util.Collection来获得所需内容。然后像这样设置初始值:

java.util.Arrays.asList( "Apple", "Banana" )

此外,您的错误表明您的报告语言已设置为Groovy。如果这是故意的,这很好,但也许这是偶然的。通过将报告语言更改为Java,我发现事情已经简化了。

我通常不会将变量类设置为这样的数组。如上所述,我将其设置为java.util.Collection。但我不知道是否有任何重要的区别。

答案 1 :(得分:0)

我刚遇到同样的问题。真正的问题是您使用的是Java表达式,但iReports工具设置为Groovy语言,因此是Groovy表达式。之前的用户提到过。如果您进入属性,请找到语言行,并将其更改为Java。这对我有用。以前的用户是正确的,但只是想指出我认为真正的问题是你的报告设置为Groovy。