【问题标题】:Velocity template - retrieving hashmap valuesVelocity 模板 - 检索 hashmap 值
【发布时间】:2019-07-29 12:13:04
【问题描述】:

我有一个 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,但没有任何打印出来,老实说,这让我很难受,因为我可能遗漏了一些非常简单的东西,但无法弄清楚它是什么。

【问题讨论】:

  • 尝试将双引号添加为$!valuesMap.get("$!field.ID")

标签: velocity


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多