我今天在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中设置值来解决这个问题,但我真的很想知道正确的语法,如果存在的话。
答案 0 :(得分:1)
您应该可以通过将变量类设置为java.util.Collection
来获得所需内容。然后像这样设置初始值:
java.util.Arrays.asList( "Apple", "Banana" )
此外,您的错误表明您的报告语言已设置为Groovy。如果这是故意的,这很好,但也许这是偶然的。通过将报告语言更改为Java,我发现事情已经简化了。
我通常不会将变量类设置为这样的数组。如上所述,我将其设置为java.util.Collection
。但我不知道是否有任何重要的区别。
答案 1 :(得分:0)
我刚遇到同样的问题。真正的问题是您使用的是Java表达式,但iReports工具设置为Groovy语言,因此是Groovy表达式。之前的用户提到过。如果您进入属性,请找到语言行,并将其更改为Java。这对我有用。以前的用户是正确的,但只是想指出我认为真正的问题是你的报告设置为Groovy。