Velocity模板引擎 - 键 - 值映射(Velocity Template engine -

2019-09-02 02:14发布

我有一些问题を使用键 - 值映射到速度。

有人有此功能的一个例子吗?

$myMap ={}

$myMap.put("mykey1", "myvalue")
$myMap.delete("mykey1")
$myMap.getValue("mykey1")

Answer 1:

正如森说,你应该使用:

#set ($myMap = {})

创建一个新的地图,并将其分配给一个变量。

现在,为什么是put打印通话。

  1. 任何不是一个指令内,像#set(not printed)#if(not printed)#foreach(again not printed) ,打印,包括自由文本,变量和方法调用

  2. 速度不能区分$myMap.get('mykey')$myMap.put('key', 'value')所以结果put被打印的呼叫。

  3. 每当有什么事情不能被正确评估,因为沿着方法返回线变量没有定义或某处null ,未能进行评估代码字面上倒入输出。

  4. 由于的文档put方法州,该函数返回存储该密钥的前值,或null ,如果没有设置值的。

  5. 总结这一切,这是正常获得该行打印。

要走出试试这个理论,你可以这样做:

#set ($myMap = {})
$myMap.put('key', 'first value')
$myMap.put('key', 'second value')
$myMap.get('key')

这将被打印:

$myMap.put('key', 'first value')
first value
second value

有两件事情可以做,使线不打印:

  1. 存储功能的结果,在一个临时变量: #set ($discard = $myMap.put('key', 'value')

  2. 用无声的方法调用: $!myMap.put('key', 'value')

我建议你的第一个,因为第二个仍然会打印的东西,当你替换现有的值。



Answer 2:

你有没有尝试这样做:

#set( $myMap = {} )

此外,请确保您使用的是速度的现代版。 古代那些没有在VTL地图语法。



文章来源: Velocity Template engine - key-value-map