我有一个HashMap
$!valuesMap ##gives {33=[texxxxt], 34=[2019-03-31], 35=[admin], 37=[P1], 40=[value1, value2]}
当我尝试直接访问值时,它看起来也很好。
$!valuesMap.get("40") ##gives [value1, value2]
当我尝试使用动态变量访问地图时出现问题。我有一个要迭代的对象列表,每个对象都有一个ID。但是我无法弄清楚如何使用此ID从地图中检索值。
#foreach( $field in $fields )
$!field.ID ##gives the id of the object, i.e. 40
##I would assume this would give me [value1, value2] when ID is 40, but it returns nothing
$!valuesMap.get($!field.ID)
#end
我尝试将ID分配给新变量(变量本身可以很好地打印出来,但是当我再次尝试访问地图时,却一无所获)。我已经尝试过建议使用here的表示法,但没有任何结果可以打印出来,说实话,这使我望而却步,因为我可能错过了一些非常简单的东西,但却无法弄清楚它是什么。
答案 0 :(得分:0)
Velocity Engine 1.7不会将方法参数转换为预期的类型。因此,如果$field.ID
是数字,则必须将其用双引号引起来以获取字符串:
$valuesMap.get("$field.ID")
否则,引擎根本找不到合适的调用方法。
从2.0开始,Velocity Engine将自动将方法参数转换为预期的类型,并且您的代码将按预期工作。