Reputation: 849
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.
Upvotes: 8
Views: 24977
Reputation: 2065
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 aString[]
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
Upvotes: 1
Reputation:
Its also possible to push elements into an array like this.
#set ($matchingProducts = [])
#set($bar = $matchingProducts.add($p))
Upvotes: 0
Reputation: 163
Tested in Velocity 1.6.
#foreach ($element in $string.split(";"))
$element
#end
Upvotes: 5
Reputation: 15872
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
Upvotes: 2