Dictionary 如何在velocity中将特性动态添加到地图?

Dictionary 如何在velocity中将特性动态添加到地图?,dictionary,velocity,Dictionary,Velocity,我有以下代码 $pageName = "test"; $Container = {}; 我喜欢通过变量设置$Container的属性。我尝试了$Container.set(“test”,$pageName)。它没有引发任何错误,但是$Container.test或$Container.get(“test”)不显示任何内容 如何修复它?问题是set的方法不正确。你需要做一个推杆。记住-Velocity正在调用Java方法。地图对象上没有“设置”方法 具体来说,你可以这样做 $Container

我有以下代码

$pageName = "test";

$Container = {};
我喜欢通过变量设置
$Container
的属性。我尝试了
$Container.set(“test”,$pageName)。它没有引发任何错误,但是
$Container.test
$Container.get(“test”)不显示任何内容


如何修复它?

问题是set的方法不正确。你需要做一个推杆。记住-Velocity正在调用Java方法。地图对象上没有“设置”方法

具体来说,你可以这样做

$Container.put("test", $pageName)
现在,一件奇怪的事情是,这将在页面中打印“true”或“false”,因为Map.put()方法返回一个布尔值。所以我总是这样

#set($dummy = $Container.put("test", $pageName))

它将结果放入另一个引用中并存储在另一个引用中(您可以忽略该引用),而不是将其呈现到页面。

嘿,我遇到的相同问题是打印在页面上的“真”或“假”,有一种更简单的方法来处理它。我所做的有点奇怪,我是合流式的,当然是在封面下使用速度。我提到这一点是因为我知道Velocity可以用于不同的应用

使用Confluence user宏,我检查req变量、请求变量(即“myPageVars”)上先前创建的属性。然后,根据宏参数,使用put方法放置一个新的键值对。通过使用$!前缀,而不仅仅是$,输出不会发送到屏幕

。。。 $!req.getAttribute(“myPageVars”).put($paramKey,$paramValue)


我对Velocity有点陌生,所以我不能保证它在所有上下文中都能工作,但它在语法上似乎比整个集合($dummy等)行更容易。

啊..抱歉,伙计们..刚刚找到了解决方案。我需要使用PUT,而不是使用set,如果你想对地图中的键进行跟踪并动态更新呢?我发现当你“$value=$arr.get($key)”一个键的值,修改它,然后“$arr.put($val)”,映射中的所有条目都作为最后一个put结束,因为它们都引用相同的“$val”