我有一个速度变量,如下所示: $ cur_record.getFieldValue(“SelectRoles”,$ locale) 这应该是一个数组。如果我打印它的值,(只需在代码中输入 $ cur_record.getFieldValue(“SelectRoles”,$ locale))我得到: 的 [ “会计”, “出纳”]
现在,我想迭代这两个值,Accountant和Cashier,但它似乎是一个字符串,而不是一个数组,我怎么能将它转换为一个数组,所以我可以迭代它?..
我试图迭代它,但不起作用,如下:
#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 :(得分:1)
您正在尝试解析先前已序列化为String的String数组。
以下代码段使用substring
,split
和replace
字符串方法来解析它。
#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
来解析它,但我最终得到了这些String方法。