2013-02-11 2 views
13

ho una mappa di hash, come di seguitoFreemarker e hashmap. Come faccio ad avere valore-chiave

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); 
modello

mio Freemarker è:

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

L'obiettivo è quello di visualizzare coppia chiave-valore nel codice HTML che ho' m generando. Per favore aiutami a farlo. Grazie!

+1

Cosa viene visualizzato? Dov'è l'errore? – Aubin

risposta

33

Codice:

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> 

uscita:

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

Dalla 2.3.25 c'è un modo migliore; vedere: https://stackoverflow.com/a/38273478/606679 – ddekany

3

utilizzare una mappa che conserva la ordine di inserimento delle coppie di valori-chiave: LinkedHashMap

+0

Questa risposta presuppone che il problema è che l'output non è nell'ordine di inserimento. Non sono sicuro se sia vero. – Gray

11

Da 2.3.25, si può fare questo:

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

Prima 2.3.25, in caso di chiavi contenenti oggetti, si può provare a utilizzare

<#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>