tutorial español java html freemarker

java - español - Freemarker y hashmap. ¿Cómo consigo clave-valor



freemarker string comparison (4)

Antes de 2.3.25, en el caso de claves que contengan objetos, puede intentar usar

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

Tengo un mapa hash como abajo

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

Mi plantilla de Freemarker es:

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

El objetivo es mostrar el par clave-valor en el HTML que estoy generando. Por favor ayúdame a hacerlo. ¡Gracias!


Desde 2.3.25, puedes hacer esto:

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


Utilice un mapa que conserve el orden de inserción de los pares clave-valor: LinkedHashMap


Código:

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

Modelo:

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

Salida:

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