2012-01-05 106 views
5

我使用Velocity模版语言,目前拥有:如何在Velocity中使用string.split之后访问数组元素?

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

的正常工作和使用“”作为分隔符预期拆分串起来。

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

我曾尝试:

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

我在JIRA使用速度和JIRA碰巧使用Velocity版本1.4,这显然不具有访问阵列如上试图支持。

任何帮助,非常感谢。

+1

$ stringList.get(0)作品为了我。 – 2015-02-27 09:14:19

回答

1

它使用Arrays.asList()将数组转换为List时使用,然后使用List中的方法访问元素。

我添加以下上下文:

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

在Velocity模板使用:

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

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

用字符串数组如下

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

我得到预期的输出:

test1 
+0

感谢您的建议,但它似乎并不奏效。不管怎么说,还是要谢谢你。 – davey1990 2012-01-08 21:49:40

+0

我现在试过了,它可以与上面列出的步骤一起工作,你可以发布你当前的代码,所以我们可以看到它为什么不适合你? – centic 2012-01-10 11:44:14

6

测试速度1.6。

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

这也适用。谢谢! – davey1990 2012-07-08 22:42:46

0

它也可以将元素推入像这样的数组。

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

作为速度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