我有一个如下的Java代码
public static void main(String args[]) throws Exception {
VelocityEngine engine = new VelocityEngine();
engine.init();
Template template = engine.getTemplate("userinfo.vm");
VelocityContext vc = new VelocityContext();
Map<String, Object> jsonResponse = new HashMap<String, Object>();
jsonResponse.put("44", "United Kingdom");
jsonResponse.put("33", "France");
jsonResponse.put("49", null);
vc.put("userList", jsonResponse);
StringWriter writer = new StringWriter();
template.merge(vc, writer);
System.out.println(writer);
}
.vm文件中的
#foreach ($mapEntry in $userList.entrySet())
$!{mapEntry.get("44")}
#end
在这里,我尝试使用上述代码获取特定的值,但未提供预期的输出结果
我的预期输出是
United Kingdom
答案 0 :(得分:0)
使用此代码遍历地图值。它与您的几乎一样,但是要注意:$userList.keySet()
代替$userList.entrySet()
,$!{userList.get($mapKey )}
代替$!{mapEntry.get("44")}
#foreach($mapKey in $userList.keySet())
$!{userList.get($mapKey )}
#end
如果您只想访问地图的特定值,请尝试以下操作:
$!{userList.get("44")}
答案 1 :(得分:0)
每https://velocity.apache.org/engine/1.7/user-guide.html#set:
您可以使用来访问上面的第一个元素
$monkey.Map.get("banana")
返回字符串“ good”,甚至$monkey.Map.banana
返回相同的值。
每https://velocity.apache.org/engine/1.7/user-guide.html#index-notation
$foo["bar"] ## Passing a string where $foo may be a Map