I discovered today in iReport that I cannot set the initial value expression of a String[] using normally valid Java syntax, such as:
private String[] fruitNames = new String[] {"Apple", "Banana"};
Extrapolating this into an iReport variable would be something as simple as this (I would think):
Name: fruitNames
VariableClass: java.lang.String[]
Calculation: Nothing
Reset Type: Report
IncrementType: None
Initial Value Expression: new String[]{"Apple", "Banana"}
Compiling my report template I get an error:
Compilation exceptions: com.jaspersoft.ireport.designer.compiler.ErrorsCollector@683896bd >net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions c>lass file: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: >calculator_Fruits_1326149102402_537017: 281: unexpected token: Apple @ line 281, column 55. >1 error
In the code editor for setting the initial value I notice that the parser underlines, in red, the curly braces {}. This makes sense because iReport interprets these braces as param, field, or variable identifiers. So I see where the conflict can exist, but does anyone know the proper syntax to use for initializing String[] in the Initial Value Expression field?
Note: I got around the issue by just setting the value in a Scriptlet, but I'm really curious to know the proper syntax, if it exists.
Best Answer
You should be able to get what you need by setting your variable class to
java.util.Collection
. Then set the initial value like this:Also, your error indicates that your report language is set to Groovy. That's fine if it's intentional, but perhaps it's accidental. I find things are simplified by changing the report language to Java.
I don't normally set the variable class to an array like that. I set it to
java.util.Collection
as mentioned above. But I don't know if there is any important difference.