我有一个Java数组,例如:
String[] arr = new String[] {"123","doc","projectReport.doc"};
在我看来,访问的自然方式是:
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
但它没有用。我已经采用了这种解决方法。但是对于这么简单的任务来说,它的代码太多了。
#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
还有其他办法吗?
答案 0 :(得分:25)
您可以使用Velocity 1.6:对于名为$array
的数组,可以只执行$array.get($index)
。
在即将推出的Velocity 1.7中,我们可以$array[$index]
(以及$list[$index]
和$map[$key]
)。
答案 1 :(得分:8)
您可以使用List
将数组包装在Arrays.asList(T... a)
中。新的List对象由原始数组支持,因此不会浪费地分配副本。即使对新列表所做的更改也会传播回数组。
然后您可以使用$list.get(int index)
在Velocity中获取对象。
如果您只需要从数组中获取一个或两个对象,您还可以使用Array.get(Object array, int index)
从数组中获取项目。
答案 2 :(得分:2)
String[] arr = new String[] {"123", "doc", "projectReport.doc"};
在我看来,访问的自然方式是:
#set($att_id = $arr[0])
#set($att_type = $arr[1])
#set($att_name = $arr[2])
使用$array.get("arr", 1)
可以获得此值,因为没有直接的方法可以从$att_id = $arr[0]
这样的数组中获取值。
希望它有效:)
答案 3 :(得分:1)
Brian's answer确实是正确的,尽管您可能想知道即将推出的Velocity 1.6直接支持数组;有关详细信息,请参阅Velocity documentation。
答案 4 :(得分:1)
有一个隐含的计数器$ velocityCount,它以值1开头,因此您不必创建自己的计数器。
答案 5 :(得分:0)
我最终使用了velocity-tools.jar中的ListTool。它有方法来访问数组的元素并获得它的大小。
答案 6 :(得分:0)
我有同样的问题,并在另一个帖子上得到了解答
#set ( $Page = $additionalParams.get('Page') )
#set ( $Pages = [] )
#if ( $Page != $null && $Page != "" )
#foreach($i in $Page.split(";"))
$Pages.add($i)
#end
#end
答案 7 :(得分:0)
速度1.6
$myarray.isEmpty()
$myarray.size()
$myarray.get(2)
$myarray.set(1, 'test')