velocity map list 数组操作
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>
#end
array:
#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 数组操作的更多相关文章
- ES6-新增的数组操作,数组解构,forEach,fillter,some.map的数组遍历,数组转换字符串
ES6-新增的数组操作 // es6数组格式 let json = { '0' : 'anan', '1' : 'anani', '2' : 'anania', length:3 } //es6 把数 ...
- Javascript数组操作
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...
- 005-Scala数组操作实战详解
005-Scala数组操作实战详解 Worksheet的使用 交互式命令执行平台 记得每次要保存才会出相应的结果 数组的基本操作 数组的下标是从0开始和Tuple不同 缓冲数组ArrayBuffer( ...
- 003-Tuple、Array、Map与文件操作入门实战
003-Tuple.Array.Map与文件操作入门实战 Tuple 各个元素可以类型不同 注意索引的方式 下标从1开始 灵活 Array 注意for循环的until用法 数组的索引方式 上面的for ...
- 【原】javascript数组操作
继续我的第二遍<javascript高级程序设计第三版>,今天要做的笔记是array 一.数组的操作 1.数组的创建: var colors= new Array(); //创建一个数组 ...
- RX学习笔记:JavaScript数组操作
RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...
- javaScript数组操作整理
一.js数组 1.创建数组: var arr = new Array();//创建没有元素空数组 var arr1 = new Array("value1","valeu ...
- javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)
主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除 ...
- js之数组操作
js之数组操作 前言 本文主要从应用来讲数组api的一些操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等.(文章摘自:https://segmentfault ...
随机推荐
- [HNOI 2017]影魔
Description 题库链接 给你一段长度为 \(n\) 的序列 \(K\) . \(m\) 组询问,每次给定左右端点 \(l,r\) .求出满足区间内下述贡献和. 如果一个区间的两个端点是这一个 ...
- 【20170920校内模拟赛】小Z爱学习
所有题目开启-O2优化,开大栈空间,评测机效率为4亿左右. T1 小 Z 学数学(math) Description 要说小 Z 最不擅长的学科,那一定就是数学了.这不,他最近正在学习加法运算.老 ...
- bzoj 3930: [CQOI2015]选数
Description 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都求一次最大公 ...
- SPOJ DQUERY树状数组离线or主席树
D-query Time Limit: 227MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Submit Status ...
- python设计模式浅析
今天简单聊聊python的设计模式,GOF设计模式(c++)和Head first design pattern(Java)是两本设计模式的经典,基本可以照搬在python上面,但是你会发现pytho ...
- Jenkins简明入门(二) -- 利用Jenkins完成Python程序的build、test、deployment
大家可能还没搞清楚,Jenkins到底能做什么? 本节内容利用Jenkins完成python程序的build.test.deployment,让大家对Jenkins能做的事情有一个直观的了解. 本节内 ...
- Dapper.Contrib拓展及数据库生成实体
1.关于Dapper.Contrib Dapper.Contrib是Dapper的一个拓展类库,Dapper是一个轻量级ORM框架,这个不了解的请自行收集资料,本文主要讲讲,数据库生成实体,并通过实体 ...
- jquery checkbox是否选中
$("#chkDisplayZxOnly").is(":checked") 选中返回true,否则返回false
- Asp.Net Core 2.0 项目实战(7)MD5加密、AES&DES对称加解密
本文目录 1. 摘要 2. MD5加密封装 3. AES的加密.解密 4. DES加密/解密 5. 总结 1. 摘要 C#中常用的一些加密和解密方案,如:md5加密.RSA加密与解密和DES加密等, ...
- 给定桩号获取纵断面中的高程值(c# for civil3d)
通过civil3d提供的api,也就是纵断面Profile类提供的方法---public double ElevationAt(double station),就可以很轻松的获取纵断面对象某桩号处的高 ...