What is the best way to access an array inside Velocity?
Solution 1
You can use use Velocity 1.6: for an array named $array
one can simply do $array.get($index)
.
In the upcoming Velocity 1.7, one will be able to do $array[$index]
(as well as $list[$index]
and $map[$key]
).
Solution 2
You could wrap the array in a List
using Arrays.asList(T... a)
. The new List object is backed by the original array so it doesn't wastefully allocate a copy. Even changes made to the new List will propagate back to the array.
Then you can use $list.get(int index)
to get your objects out in Velocity.
If you need to get just one or two objects from an array, you can also use Array.get(Object array, int index)
to get an item from an array.
Solution 3
Velocity 1.6
$myarray.isEmpty()
$myarray.size()
$myarray.get(2)
$myarray.set(1, 'test')
http://velocity.apache.org/engine/1.7/user-guide.html
Solution 4
String[] arr = new String[] {"123", "doc", "projectReport.doc"};
In my opinion the natural way to access would be:
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
The value for this can be get by using $array.get("arr", 1)
because there is no direct way to get the value from array like $att_id = $arr[0]
in velocity.
Hope it works :)
Solution 5
there is an implicit counter $velocityCount which starts with value 1 so you do not have to create your own counter.
Related videos on Youtube
Sergio del Amo
Updated on January 26, 2020Comments
-
Sergio del Amo over 4 years
I have a Java array such as:
String[] arr = new String[] {"123","doc","projectReport.doc"};
In my opinion the natural way to access would be:
#set($att_id = $arr[0]) #set($att_type = $arr[1]) #set($att_name = $arr[2])
But that it is not working. I have come with this workaround. But it a bit too much code for such an easy task.
#set($counter = 0) #foreach($el in $arr) #if($counter==0) #set($att_id = $el) #elseif($counter==1) #set($att_type = $el) #elseif($counter==2) #set($att_name = $el) #end #set($counter = $counter + 1) #end
Is there any other way?
-
Manoj Kumar about 9 yearsCan anyone answer this stackoverflow.com/questions/31116553/…