【问题标题】:iReport - Variable - String[] - Initial Value ExpressioniReport - 变量 - String[] - 初始值表达式
【发布时间】:2012-01-09 22:51:31
【问题描述】:

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

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

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

名称:fruitNames

变量类:java.lang.String[]

计算:没有

重置类型:报告

增量类型:无

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

编译我的报告模板时出现错误:

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

在用于设置初始值的代码编辑器中,我注意到解析器用红色为大括号 {} 下划线。这是有道理的,因为 iReport 将这些大括号解释为参数、字段或变量标识符。所以我知道冲突可能存在的地方,但是有谁知道在 Initial Value Expression 字段中初始化 String[] 的正确语法吗?

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

【问题讨论】:

  • 您可以将报告的语言更改为Java(也许现在是Groovy)。您可以尝试在String.split(String delimiter) 方法的帮助下初始化数组
  • 只是想知道,使用String数组的原因是什么?

标签: variables jasper-reports expression ireport


【解决方案1】:

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

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

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

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

【讨论】:

  • 您的初始变量表达式解决方案有效,因此我会将您的回复标记为答案。非常感谢!但是不能将变量类设置为数组,如String[],这不正确。你绝对可以,事实上我正在这样做。虽然也许这不是正确的方法。但它确实有效。
  • 嗯...在这种情况下,我将更新我的答案以删除虚假信息。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 2013-05-28
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多