I am using Velocity Templating Language and currently have:
#set ( $stringList = $string.split(",") )
which works fine and splits the string up using a ',' as a delimiter as expected.
My question is how do i now access each of the elements in the $stringList?
I have tried:
$stringList.get(0)
$stringList[0]
$stringList.[0]
${stringList}.get(0)
I am using Velocity in JIRA and JIRA happens to use Velocity version 1.4 which apparently doesn't have support for accessing arrays as tried above.
Any help is much appreciated.
It works when I convert the array to a List using Arrays.asList() and then use methods from List to access elements.
I add the following to the context:
context.put("arrays", Arrays.class);
In velocity template I use:
#set ( $array = $getarray.getArray() )
$arrays.asList($array).get(0)
With a String-Array as follows
new String[] {"test1", "test2", "test3", "test4"};
I get the expected output:
test1
Tested in Velocity 1.6.
#foreach ($element in $string.split(";"))
$element
#end
As of Velocity 1.6, all array references are now "magically" treated as if they are fixed-length lists. This means that you can call java.util.List
methods on array references. So, if you have a reference to an array (let's say this one is a String[]
with three values), you can do:
$myarray.isEmpty()
$myarray.size()
$myarray.get(2)
$myarray.set(1, 'test')
Source: http://velocity.apache.org/engine/releases/velocity-1.7/user-guide.html#methods
Its also possible to push elements into an array like this.
#set ($matchingProducts = [])
#set($bar = $matchingProducts.add($p))