Velocity生成模板的时候,经常需要使用到map、list对象,然后遍历输出对象的属性值。当你需要遍历的时候记录遍历的步长的时候,可以使用$velocityCount内置变量进行输出。下面demo开始我们的代码之旅吧。

首先我们定义一个javabean实体对象,user定义如下:

publicclass User {privateintid;private String name;publicintgetId(){returnid;}publicvoidsetId(intid){this.id = id;}public String getName(){returnname;}publicvoidsetName(String name){this.name = name;}publicvoidset(intid, String name){this.id = id;this.name = name;}publicUser(intid, String name){this.id = id;this.name = name;}
}

定义的模板文件1.bpmn内容如下所示:

  List:#foreach($member in $members)$velocityCount <li>$member.id -$member.name </li>#end <br>Map:#foreach($member in$membersMap.entrySet())<li>$member.key - $member.value.id$member.value.name</li>#endarray:#set($arr=[0..23])
#foreach($foo in [0..23])
$foo
#end

程序代码如下所示:

   List<User> list = newArrayList<User>();Map<String, User> map=newHashMap<String,User>();list.add(newUser(1, "a"));list.add(newUser(2, "b"));list.add(newUser(3, "c"));map.put("1", newUser(1, "a"));map.put("2", newUser(2, "b"));map.put("3", newUser(3, "c"));Properties p = newProperties();p.put("file.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");Velocity.init(p);// 初始化vm模板Template template =Velocity.getTemplate("1.bpmn", "UTF-8");// 初始化上下文VelocityContext context = newVelocityContext();// 添加数据到上下文中context.put("title", "cccc");context.put("name", "a,b,c");context.put("members", list);//使用$velocityCount可以对遍历进行计数context.put("membersMap", map);StringWriter writer = newStringWriter();template.merge(context, writer);writer.close();System.out.println(writer);

输出程序结果部分如下所示:

List:

1 <li>1 - a</li>

2 <li>2 - b</li>

3 <li>3 - c</li>

<br>

Map:

<li>1 - 1a</li>

<li>2 - 2b</li>

<li>3 - 3c</li>

array:

0

1

2

Ok非常完美搞定。

velocity map list 数组操作相关推荐

  1. js map 排序_数组方法写给女友的一系列 JS 数组操作(建议收藏 | 内附思维导图)...

    前言 最近和女友,咳咳...(说出来可能会被打s)学习JS数组方法,用几个字形容的话就是听说过,实际使用.遇到的时候就分不清具体方法会得到怎样的结果. 今天我将通过这篇文章好好整理一下关于JS数组的方 ...

  2. 微信小程序——数组操作 (增加删除修改遍历)map、filter、forEach、find的用法、二维数组,排序,求和、指定长度数组赋值

    一.数组的操作 Array.push() ->在数组后面继续插入内容 Array.pop() ->拿走数组最后一个内容 Array-shift()->拿走数组的第一个内容 (unsh ...

  3. go map(映射)的概念、3种创建方式及map的CRUD操作

    引入 [1]映射(map), Go语言中内置的一种类型,它将键值对相关联,我们可以通过键 key来获取对应的值 value. 类似其它语言的集合 [2]基本语法 var map变量名 map[keyt ...

  4. Scala与Java差异(四)之数组操作

    一.数组操作之Array.ArrayBuffer以及遍历数组 (1)Array 在Scala中,Array代表的含义与Java中类似,也是长度不可改变的数组.此外,由于Scala与Java都是运行在J ...

  5. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  6. jq 组装数组_Jquery数组操作

    jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的 ...

  7. Ruby 数组操作(和 Python3 列表+元组+集合 对比)

    本来是想写到 Ruby 学习笔记一块的,但是数组操作这块的内容也太多了,所以单独提取出来了.Ruby 里没有单独的集合的概念,或许是因为数组就已经足够涵盖了这些了.所以,话不多说,直接上菜(为了对比明 ...

  8. ES6(迭代器、Set、Map、数组去重)

    目录 迭代器Iterator Iterator 的作用 原生具备 Iterator 接口的数据结构 Iterator 的遍历过程 迭代器实现了Iterator接口,只要实现了Iterator就可以使用 ...

  9. nodejs 数组操作

    数组操作 map 通过指定函数处理数组的每个元素,并返回处理后的数组. map() 方法会将数组中元素依次传入方法中,并将方法的返回结果组成新数组返回. 传入的function可以有自己的三个形参,c ...

最新文章

  1. NUnit学习笔记之进阶篇
  2. 【Verilog HDL 训练】第 07 天(串并转换)
  3. Bootstrap 学习笔记4 巨幕页头略缩图警告框
  4. 自定义View 进度条
  5. Linux C语言实现ls -l
  6. 7 操作系统第二章 进程管理 进程同步与互斥
  7. c语言二叉树_linux学习第20节,二叉树的特性和插入、查询、删除等基本操作
  8. log4j.xml的实用例子
  9. python汉化版编辑器_Thonny(Python编辑器)
  10. dotween上下摆动_DOTWeen插件使用技巧
  11. java mina 框架 获取字节_浅谈Java的Mina框架传递对象
  12. 企业正确导入BPM系统要注意什么
  13. OneNET麒麟座应用开发之三:获取温湿度数据
  14. D*(Dynamic A*) 算法详细解析
  15. 浅谈防火墙、IDS和IPS之间的区别
  16. Mybatis源码解析《一》
  17. 数据可视化之象形标识图,简约百变的数据视觉展现形式
  18. Android学习:线程同步之synchronized
  19. CSS3系列视频教程,从入门到精通
  20. W5100S-EVB-Pico [Micropython] – MQTT

热门文章

  1. OpenCV2:Mat介绍及常见用法
  2. python读压缩文件内容_使用Python读写及压缩和解压缩文件的示例
  3. linux 单用户模式 挂载u盘_(原创)Linux文件系统只读Read-only file system的快速解决方法...
  4. websocket.onmessage回调没反应_等待A股暴跌回调补四缺口倒计时第二十四天——8月19日总结...
  5. kinnect face tracking大概流程
  6. DE13 Finding Particular Solutions to Inhomogeneous ODEs
  7. 基于卷积神经网络的大豆病害识别
  8. 随机向量x的协方差阵_【科普】如何正确理解特征值与特征向量
  9. 数据缺失,如何智能修复?第一名方案源码分享
  10. Keras 实现 LSTM时间序列预测