您的位置:首页 > 其它

velocity map list 数组操作

2016-04-13 12:57 561 查看


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非常完美搞定。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: