I have a hash map as below
HashMap<String, String> map = new HashMap<String, String>();
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");
Map root = new HashMap();
root.put("hello", map);
My Freemarker template is:
<html><body>
<#list hello?keys as key>
${key} = ${hello[key]}
</#list>
</body></html>
The goal is to display key-value pair in the HTML that I'm generating. Please help me to do it. Thanks!
To get the key and value elements, we should call the getKey() and getValue() methods. The Map. Entry interface contains the getKey() and getValue() methods. But, we should call the entrySet() method of Map interface to get the instance of Map.
To retrieve the set of keys from HashMap, use the keyset() method. However, for set of values, use the values() method.
Code:
Map root = new HashMap();
HashMap<String, String> test1 = new HashMap<String, String>();
test1.put("one", "1");
test1.put("two", "2");
test1.put("three", "3");
root.put("hello", test1);
Configuration cfg = new Configuration(); // Create configuration
Template template = cfg.getTemplate("test.ftl"); // Filename of your template
StringWriter sw = new StringWriter(); // So you can use the output as String
template.process(root, sw); // process the template to output
System.out.println(sw); // eg. output your result
Template:
<body>
<#list hello?keys as key>
${key} = ${hello[key]}
</#list>
</body>
Output:
<body>
two = 2
one = 1
three = 3
</body>
Since 2.3.25, you can do this:
<body>
<#list hello as key, value>
${key} = ${value}
</#list>
</body>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With