Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access elements of array after using string.split in Velocity?

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.

like image 826
Mr-DC Avatar asked Jan 05 '12 23:01

Mr-DC


3 Answers

Tested in Velocity 1.6.

#foreach ($element in $string.split(";"))
   $element
#end
like image 181
oomkoos Avatar answered Oct 20 '22 06:10

oomkoos


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
like image 1
centic Avatar answered Oct 20 '22 04:10

centic


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

like image 1
juan Avatar answered Oct 20 '22 06:10

juan