2015-10-08 68 views
0

我有一個速度變量,像這樣: $ cur_record.getFieldValue(「SelectRoles」,$環境) 是應該是一個數組。如果我打印出它的價值,(也可以放到$ cur_record.getFieldValue( 「SelectRoles」,$區域)在代碼中)我得到: [ 「會計師」, 「收銀機」]將字符串轉換爲陣列中的速度

現在,我想要迭代這2個值,會計和收銀員,但它似乎是一個字符串,而不是一個陣列,我怎麼能將其轉換爲一個數組,所以我可以迭代它呢..

我試着迭代它,但不起作用,如下所示:

#foreach($bla_role in $cur_record.getFieldValue("SelectRoles", $locale)) 
    $bla_role 
#end 

還嘗試獲取值,如如果它是一個數組,無法正常工作或:

$cur_record.getFieldValue("SelectRoles", $locale).get(0) 

我試着將它設置爲另一個變量,就像這樣:

#set($roleval = $cur_record.getFieldValue("SelectRoles", $locale)) 
$roleval.get(0) 

,但它不工作,但如果我設置一個字符串作爲值將被打印(值硬編碼),它的工作!像這樣:

#set($roleval = ["Accountant","Cashier"]) 
$roleval.get(0) 

我不知道我是否有逃避的東西,或者我失去了一些東西,可以有人幫助我嗎?

謝謝!

+0

這可能會有所幫助:http://stackoverflow.com/questions/8751387/how-to-access-elements-of-array-after-using-string-split-in-velocity –

+0

感謝Parkash Kumar,我看過那個帖子已經出現了,對我沒有效果:( – juanmeza

+0

當你說「不起作用」時會發生什麼?你是否有錯誤信息?你打印什麼'$ cur_record.getFieldValue(「SelectRoles」,$ locale).class.getName ()'? –

回答

1

您試圖解析先前序列化爲字符串的字符串數組。

以下片段使用substring,splitreplace字符串方法來解析它。

#set($roleval = '["Accountant","Cashier"]') 
#set($rolevalLengthMinusOne = $roleval.length() - 1) 
#set($roles = $roleval.substring(1, $rolevalLengthMinusOne).split(",")) 

#foreach($role in $roles) 
    <h1>$role.replace('"',"")</h1> 
#end 

起初,我試圖用#evaluate解析它,但我結束了與這些字符串的方法。

+0

謝謝@TomášPiňos,i三編輯你的答案,它的工作原理,但它只適用於如我提到的字符串初始化...但我的價值來自另一個變量,我怎麼可以初始化** roleval **變量?,我試過這個:**# set($ roleval = $ cur_record.getFieldValue(「SelectRoles」,$ locale))**但沒有工作,也是這個**#set($ roleval ='$ cur_record.getFieldValue(「SelectRoles」,$ locale)') **但是也沒有工作......你能幫我嗎? – juanmeza

+0

我需要知道'$ roleval.class.name'的值。 –

+0

我的代碼有問題,它確實有效!謝謝!! – juanmeza