Freemarker and hashmap. How do I get key-value

后端 未结 4 1515
Happy的楠姐
Happy的楠姐 2020-12-09 02:55

I have a hash map as below

HashMap map = new HashMap();
map.put(\"one\", \"1\");
map.put(\"two\", \"2\");
map.put         


        
相关标签:
4条回答
  • 2020-12-09 03:36

    Before 2.3.25, in case of keys containing objects, you can try to use

    <#assign key_list = map?keys/>
    <#assign value_list = map?values/>
    <#list key_list as key>
      ...
      <#assign seq_index = key_list?seq_index_of(key) />
      <#assign key_value = value_list[seq_index]/>
      ...
         //Use the ${key_value}
      ...
    </#list>
    
    0 讨论(0)
  • 2020-12-09 03:40

    Code:

    HashMap<String, String> test1 = new HashMap<String, String>();
    Map root = new HashMap();
    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>
    
    0 讨论(0)
  • 2020-12-09 03:50

    Use a map that preserves the insertion order of the key-value pairs: LinkedHashMap

    0 讨论(0)
  • 2020-12-09 03:52

    Since 2.3.25, you can do this:

    <body>
    <#list hello as key, value> 
        ${key} = ${value} 
    </#list> 
    </body>
    
    0 讨论(0)
提交回复
热议问题