`

freemaker 遍历list嵌套map

阅读更多
有这样一个数据结构List<Map<String, Object>> items = ...,需求是将这个List中的数据映射到一个xml文件中。技术用到freemaker。使用freemaker的目的就是使得数据和数据的展现形式分离。

1.程序如下:
List<Map<String, Object>> items = ...
Map<String, Object> root = new HashMap<String, Object>();
root.put("taskId", taskId + "");
root.put("items", items);
root.put("tasks", tasks);

java.io.StringWriter w = new StringWriter();
temp.process(root, w);


2.模板如下:
<?xml version="1.0" encoding="utf-8" ?>
<function id="${taskId}" name="default" desc="默认配置文件">
	<#if items?size != 0>
	<#list items as item>
	<item key="${item["ITEMKEY"]}" value="${item["ITEMNAME"]}" desc="${item["ITEMDESC"]?if_exists}" />
	</#list>
	</#if>
	<#list tasks as task>
	<component id="${task["PROGRAMID"]}" name="${task["TASKNAME"]}" desc="${task["TASKNAME"]?if_exists}">
		<#if task["items"]?size != 0>
		<#list task["items"] as item>
		<item key="${item["ITEMKEY"]}" value="${item["ITEMNAME"]}" desc="${item["ITEMDESC"]?if_exists}" />
		</#list>
		</#if>
	</component>
	</#list>
</function>


3.生成的xml文件按如下:
<?xml version="1.0" encoding="utf-8" ?>
<function id="8001" name="default" desc="默认配置文件">
	<item key="sender" value="dy.cn" desc="发件人姓名" />
	<item key="server" value="mail.n" desc="服务器地址" />
	<item key="user" value="n" desc="用户名" />
	<item key="password" value="n" desc="密码" />
	<item key="subject" value="警" desc="题" />
	<item key="receiverlist" value=""
		desc="" />
	<item key="defaultproduct" value="1" desc="组" />
	<item key="mobilelist" value="13812345678" desc="表" />
	
	<component id="GatewayStateRule" name="GatewayStateRule"
		desc="规则">
		<item key="duration" value="600" desc="时长" />
		<item key="mode" value="1,2" desc="邮件" />
		<item key="times" value="3" desc="数" />
		<item key="interval" value="3" desc="报" />
		<item key="message" value="信息" />
		<item key="alertedtimes" value="0" desc="数" />
		<item key="lastalerttime" value="1978-1-1 00:00:00" desc="间" />
	</component>	
</function>

分享到:
评论
1 楼 zjfshowtime 2013-05-14  
你觉得你的代码能通么?你是copy的别人的,还是...

相关推荐

    FreeMarker 遍历list

    NULL 博文链接:https://jsjxqjy.iteye.com/blog/2072705

    Freemarker中遍历list集合实例

    Freemarker中遍历list集合实例

    Freemarker 遍历Map数据

    @RequestMapping(/freemarker) @Controller public class FreemarkerController { //测试1 @RequestMapping(/test1) public String test1(Model model){ //向数据模型放数据 model.addAttribute(name,三年二班)...

    SpringBoot_Freemarker生成Word_多个表格+两层嵌套循环

    PLUS:若表格之外还有嵌套的循环,也需要用&lt;#list table as map&gt;&lt;/#list&gt;,注意这里的&lt;#list&gt;&lt;/#list&gt;标签不要和某对其他标签交叉,不可以出现&lt;#list&gt;&lt;w:p&gt;&lt;/#list&gt;这种 6. 标识替换完之后,另存为.ftl后缀文件...

    FreeMarker学习笔记

    FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写。

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单

    jquery ajax后台返回list,前台用jquery遍历list的实现

    下面小编就为大家带来一篇jquery ajax后台返回list,前台用jquery遍历list的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    freeMark if嵌套

    if的嵌套前段时间一直没有用过,用这个小例子看。能够很好理解 主要注意:()&gt;这个括号

    java导出word使用freemarker模板map数据导出word带图片

    java导出word使用freemarker模板map数据导出word带图片 可以循环map 中list。 调用的2种方法在博客 https://blog.csdn.net/yjflinchong/article/details/122614203

    描述freemarker的list

    比较好的描述freemarker的list的文章

    Freemarker中List的应用

    NULL 博文链接:https://zhousheng193.iteye.com/blog/1129664

    freemarker导出word

    生成二维码图片. 使用word模板批量生成word. 使用freemarker的list遍历数据。

    freemarker模板生成word文档完整代码

    最近在做一个出卷系统,需要通过试卷模板从数据库中抽取题目,然后按照模板的样式生成完整的试卷,包括试卷格式的排版和图片的写入。这是用freemarker模板生成word文档。里面包括完整代码和所需jar包。

    FreeMarker单元格合并,填充数据,遍历表格

    FreeMarker单元格合并,填充数据,遍历表格

    freemarker生成复杂excel,带换行

    用freemarker 来导出Excel 会简单很多。并且可以导出各种复杂表格,本示例带单元格内换行功能,项目中亲测可以使用,欢迎大家下载使用!

    freemarker

    使用FTL标签时, 应该有正确的嵌套,而不是交叉使用,这和XML标签的用法完全一样.如果全用不存在的指令,FreeMarker不会使用模板输出,而是产生一个错误消息.FreeMarker会忽略FTL标签中的空白字符.值得注意的是, /&gt; 和...

    FreeMarker Demo

    这是一个java项目 下载这个示例 轻松搞定FreeMarker 包括: FreeMarker 解析javabean FreeMarker 解析map FreeMarker 解析list include标签用法

    freemarker语法完整版

    Freemarker页面语法 A 概念 最常用的 3 个概念 sequence 序列,对应java 里的list 、数组等非键值对的集合 hash 键值对的集合 namespace 对一个ftl 文件的引用, 利用这个名字可以访问到该ftl 文件的资源 ...

    安装freemarker插件(freemarker的eclipse插件)

    安装freemarker插件(freemarker的eclipse插件) a) 首先下载 freemarker-ide-0.9.14.zip(在这里不用下载了,附件中已经有了) b) 解压后:把hudson.freemarker_ide_0.9.14这个文件放到:eclipse\plugins下面 c) 发现...

Global site tag (gtag.js) - Google Analytics