2013-02-11 31 views
13

Tôi có một bản đồ băm như sauFreemarker và hashmap. Làm thế nào để có được giá trị khóa

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 mẫu là:

<html><body> 
    <#list hello?keys as key> 
     ${key} = ${hello[key]} 
    </#list> 
</body></html> 

Mục đích là để hiển thị cặp khóa-giá trị trong HTML mà tôi m tạo ra. Xin hãy giúp tôi làm điều đó. Cảm ơn!

+1

Nội dung hiển thị là gì? Lỗi ở đâu? – Aubin

Trả lời

33

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 

mẫu:

<body> 
<#list hello?keys as key> 
    ${key} = ${hello[key]} 
</#list> 
</body> 

Output:

<body> 
    two = 2 
    one = 1 
    three = 3 
</body> 
+3

Kể từ 2.3.25 có cách tốt hơn; xem: https://stackoverflow.com/a/38273478/606679 – ddekany

3

Sử dụng bản đồ riêng giữ gìn Để chèn các cặp khóa-giá trị: LinkedHashMap

+0

Câu trả lời này giả định rằng vấn đề là đầu ra không nằm trong thứ tự chèn. Tôi không chắc đó có phải là sự thật không. – Gray

11

Kể từ 2.3.25, bạn có thể làm điều này:

<body> 
<#list hello as key, value> 
    ${key} = ${value} 
</#list> 
</body> 
0

Trước 2.3.25, trong trường hợp các phím chứa các đối tượng, bạn có thể thử sử dụng

<#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> 
Các vấn đề liên quan