iReport - Variable - String[] - Initial Value Expression
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:
java.util.Arrays.asList( "Apple", "Banana" )
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.
depth13
Updated on June 04, 2022Comments
-
depth13 almost 2 years
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.
-
depth13 over 12 yearsYour solution for the initial variable expression works, and therefore I will mark your reply as the answer. Thank You Very much! But it is not true that you cannot set the variable class as an array, such as String[]. You definitely can, and in fact I am doing so. Although maybe that is not the correct way. But it does work.
-
mdahlman over 12 yearsHmm... In that case I'll update my answer to remove the false information.