Velocity模板 - 检索hashmap值

问题描述 投票:0回答:1

我有一个HashMap <String,List>,我在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的符号并且没有任何打印出来,它老老实实地把我推到了墙上,因为我可能错过了一些非常简单的东西,但是无法弄清楚它是什么。

velocity
1个回答
0
投票

Velocity Engine 1.7不会将方法参数转换为预期类型。因此,如果$field.ID是一个数字,你必须用双引号括起来得到一个字符串:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.