2012-01-05 166 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