Reputation: 357
i have a java code like below
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);
}
in .vm file
#foreach ($mapEntry in $userList.entrySet())
$!{mapEntry.get("44")}
#end
Here i am trying to get particular value using above code, but its not giving expected output
My expected output is
United Kingdom
Upvotes: 6
Views: 13403
Reputation: 26170
Per https://velocity.apache.org/engine/1.7/user-guide.html#set:
You could access the first element above using
$monkey.Map.get("banana")
to return a String 'good', or even$monkey.Map.banana
to return the same value.
Per https://velocity.apache.org/engine/1.7/user-guide.html#index-notation
$foo["bar"] ## Passing a string where $foo may be a Map
Upvotes: 0
Reputation: 7905
Use this code to iterate through your map values. It is almost the same as yours however pay attention to: $userList.keySet()
instead of $userList.entrySet()
and $!{userList.get($mapKey )}
instead of $!{mapEntry.get("44")}
#foreach($mapKey in $userList.keySet())
$!{userList.get($mapKey )}
#end
If you want just to access a specific value of your map try this:
$!{userList.get("44")}
Upvotes: 9