freemark中Map遍历问题

本文介绍在Freemarker模板引擎中如何正确地遍历Map,并获取不同类型的键值。重点介绍了两种遍历方法及注意事项,特别是对于键类型的限制。

当Map里面的key 是Object(String,Integer,etc)等要通过以下的方式来得到

<#list testMap?keys as testKey>
< option value="${testKey}" >

${testMap.get(testKey)}
</option>
</#list>

或者使用:

<#list testMap.keySet() as testKey>
< option value="${testKey}" >
${testMap.get(testKey)}

</option>
</#list>

--------切记在webwork自带的freemarker中对Map中Key的定义为String类型(如果你想用${Map[key]}这样取值的话;
如果用${Map.get(key)}这样取值就可以用其他类型,如Map<Long,Object>),更高片本是否可以用其他类型本人未曾验证

### Freemarker 输出到字符串 在 Freemarker 模板引擎中,将生成的结果输出到字符串是一个常见的需求,尤其是在需要将模板渲染结果作为字符串返回的场景中,例如生成邮件内容、动态文档等。 为了实现将模板的输出结果写入字符串,通常使用 `StringWriter` 作为输出流。以下是一个完整的代码示例,展示了如何使用 `StringTemplateLoader` 加载模板内容,并将渲染结果输出到字符串: ```java StringWriter writer = new StringWriter(); String content = "你的名字${name}"; Configuration configuration = new Configuration(); StringTemplateLoader stringLoader = new StringTemplateLoader(); stringLoader.putTemplate("contract", content); configuration.setTemplateLoader(stringLoader); Template template = configuration.getTemplate("contract", "utf-8"); Map<String, Object> root = new HashMap<>(); root.put("name", "郭啸天"); try { template.process(root, writer); System.out.println(writer.toString()); } catch (TemplateException e) { e.printStackTrace(); } ``` 上述代码中,`StringWriter` 被用作模板处理的输出目标,最终通过 `writer.toString()` 获取渲染后的字符串结果。这种方式非常适合在不需要直接写入文件或响应流的场景下使用,例如在内存中生成内容并进一步处理[^1]。 ### 相关问题 1. 如何在 FreeMarker 中避免 `NonStringOrTemplateOutputException` 错误? 2. 在 FreeMarker 中如何处理非字符串类型的变量输出? 3. Freemarker 如何遍历 `Map<Bean, List<Bean>>` 类型的数据? 4. 如何在 FreeMarker 中正确使用布尔值并避免格式错误? 5. 如何在 FreeMarker 中使用 `?string` 内建函数进行自定义格式化?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值