我在Velocity中使用键值Map时遇到了一些问题。有人有这个功能的例子吗?
$myMap ={} $myMap.put("mykey1", "myvalue") $myMap.delete("mykey1") $myMap.getValue("mykey1")
dgenwo3n1#
正如 内森 所说 , 你 应该 使用 :
#set ($myMap = {})
中 的 每 一 个若 要 创建 新 Map 并 将 其 分配 给 变量 , 请 执行 以下 操作 。现在 , 为什么 输出 put 调用 。1.任何 不在 指示 词 内 的 项目 , 例如 #set(not printed) 、 #if(not printed) 或 #foreach(again not printed) , 都会 打印 出来 , 包括 自由 文字 、 变数 和 * * 方法 呼叫 * * 。
put
#set(not printed)
#if(not printed)
#foreach(again not printed)
$myMap.get('mykey')
$myMap.put('key', 'value')
null
#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')1.使用 静默 方法 调用 :$!myMap.put('key', 'value') 个我 建议 使用 第 一 种 方法 , 因为 当 您 替换 现有 值 时 , 第 二 种 方法 仍然 会 打印 一些 内容 。
#set ($discard = $myMap.put('key', 'value')
$!myMap.put('key', 'value')
oprakyz72#
您是否尝试执行:
#set( $myMap = {} )
另外,请确保您使用的是现代版本的Velocity。古代的Velocity在VTL中没有Map语法。
syqv5f0l3#
只需将!添加到不打印输出:$!myMap.put(“键”,“第二个值”)
3条答案
按热度按时间dgenwo3n1#
正如 内森 所说 , 你 应该 使用 :
中 的 每 一 个
若 要 创建 新 Map 并 将 其 分配 给 变量 , 请 执行 以下 操作 。
现在 , 为什么 输出
put
调用 。1.任何 不在 指示 词 内 的 项目 , 例如
#set(not printed)
、#if(not printed)
或#foreach(again not printed)
, 都会 打印 出来 , 包括 自由 文字 、 变数 和 * * 方法 呼叫 * * 。$myMap.get('mykey')
和$myMap.put('key', 'value')
的 不同 语义 ( 读取 器 与 写入 器 ) , 因此put
调用 的 结果 将 被 打印 出来 , 就 像 任何 其他 方法 一样 。1.每当 由于 变量 未 定义 或 某 个 方法 返回
null
而 导致 无法 正确 求值 时 , 无法 求值 的 代码 就会 被 直接 转储 到 输出 中 。1.正如
put
方法 的 文档 所 述 , 该 函数 返回 为 该 键 存储 的 上 一 个 值 , 如果 根本 没有 设置 值 , 则 返回null
。1.总 而言 之 , 这 句 话 被 印 出来 是 很 正常 的 。
要 尝试 这个 理论 , 可以 这样 做 :
格式
这 将 被 打印 :
格式
您 可以 执行 以下 两 项 操作 以 使 该行 不 被 打印 :
1.将 函数 的 结果 存储 在 临时 变量 中 :
#set ($discard = $myMap.put('key', 'value')
1.使用 静默 方法 调用 :
$!myMap.put('key', 'value')
个我 建议 使用 第 一 种 方法 , 因为 当 您 替换 现有 值 时 , 第 二 种 方法 仍然 会 打印 一些 内容 。
oprakyz72#
您是否尝试执行:
另外,请确保您使用的是现代版本的Velocity。古代的Velocity在VTL中没有Map语法。
syqv5f0l3#
只需将!添加到不打印输出:$!myMap.put(“键”,“第二个值”)