如何在Velocity中使用string.split后访问数组元素?

时间:2012-01-05 23:24:33

标签: arrays velocity

我正在使用Velocity模板语言,目前有:

#set ( $stringList = $string.split(",") )

工作正常,并使用','作为分隔符按预期分割字符串。

我的问题是我现在如何访问$ stringList中的每个元素?

我试过了:

$stringList.get(0)
$stringList[0]
$stringList.[0]
${stringList}.get(0)

我在JIRA中使用Velocity,而JIRA恰好使用Velocity版本1.4,如上所述,它显然不支持访问数组。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:6)

在Velocity 1.6中测试。

#foreach ($element in $string.split(";"))
   $element
#end

答案 1 :(得分:1)

当我使用Arrays.asList()将数组转换为List,然后使用List中的方法来访问元素时,它可以正常工作。

我将以下内容添加到上下文中:

context.put("arrays", Arrays.class);

在速度模板中,我使用:

#set ( $array = $getarray.getArray() )

$arrays.asList($array).get(0)

使用String-Array如下

new String[] {"test1", "test2", "test3", "test4"};

我得到了预期的输出:

test1

答案 2 :(得分:1)

  

从Velocity 1.6开始,所有数组引用现在都被“神奇地”处理,就像它们是固定长度列表一样。这意味着您可以在数组引用上调用java.util.List方法。所以,如果你有一个数组的引用(假设这个是String[]有三个值),你可以这样做:

$myarray.isEmpty()

$myarray.size()

$myarray.get(2) 

$myarray.set(1, 'test')

来源:http://velocity.apache.org/engine/releases/velocity-1.7/user-guide.html#methods

答案 3 :(得分:0)

它也可以将元素推送到这样的数组中。

#set ($matchingProducts = [])
#set($bar = $matchingProducts.add($p))