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非常完美搞定。
上一篇:MySQL查询缓存 --《高性能MySQL》读书笔记


下一篇:[Spark][Python]RDD flatMap 操作例子