以速度

时间:2015-10-08 04:19:39

标签: liferay velocity

我有一个速度变量,如下所示: $ 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)

我不知道我是否必须逃避某些事情,或者我错过了什么,有人可以帮助我吗?

谢谢你!

1 个答案:

答案 0 :(得分:1)

您正在尝试解析先前已序列化为String的String数组。

以下代码段使用substringsplitreplace字符串方法来解析它。

#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方法。

相关问题