Получить конкретное значение по ключу из Hashmap в шаблоне скорости
У меня есть код 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
1 ответ
Используйте этот код для перебора значений вашей карты. Это почти так же, как у вас, однако обратите внимание на: $userList.keySet()
вместо $userList.entrySet()
а также $!{userList.get($mapKey )}
вместо $!{mapEntry.get("44")}
#foreach($mapKey in $userList.keySet())
$!{userList.get($mapKey )}
#end
Если вы хотите просто получить доступ к определенному значению вашей карты, попробуйте это:
$!{userList.get("44")}
Согласно https://velocity.apache.org/engine/1.7/user-guide.html:
Вы можете получить доступ к первому элементу выше, используя
$monkey.Map.get("banana")
чтобы вернуть строку "хорошо" или даже$monkey.Map.banana
чтобы вернуть то же значение.
Согласно https://velocity.apache.org/engine/1.7/user-guide.html
$foo["bar"] ## Passing a string where $foo may be a Map