速度模板-检索哈希图值

时间:2019-03-07 14:52:06

标签: velocity

我有一个HashMap ,我将其填充到Java类中。当我尝试在Velocity模板中将其打印出来时,看起来不错。

$!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的表示法,但没有任何结果可以打印出来,说实话,这使我望而却步,因为我可能错过了一些非常简单的东西,但却无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:0)

Velocity Engine 1.7不会将方法参数转换为预期的类型。因此,如果$field.ID是数字,则必须将其用双引号引起来以获取字符串:

$valuesMap.get("$field.ID")

否则,引擎根本找不到合适的调用方法。

从2.0开始,Velocity Engine将自动将方法参数转换为预期的类型,并且您的代码将按预期工作。