velocity模板使用(日常记录)
2016-04-11 14:49
393 查看
需要添加的Jar包:
commons-beanutils-1.7.0.jar
commons-collections-3.2.1.jar
commons-digester-1.8.jar
velocity-1.7.jar
velocity-1.7-dep.jar
velocity-tools-2.0.jar
目录结构:
VMParserUtil帮助类
package util;
import java.io.StringWriter;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
public class VMParserUtil{
private static VMParserUtil parser = new VMParserUtil();
private VelocityEngine velocity = null;
private Map<String, Template> templateBuffer = null;
private static final String PREFIX = "/vm/";
private VMParserUtil(){
Properties p = new Properties();
p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
p.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
p.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
velocity = new VelocityEngine();
velocity.init(p);
templateBuffer = new ConcurrentHashMap<String, Template>();
}
public static VMParserUtil getInstance(){
return parser;
}
/**
* 解析velocity模板
* @Title parse
* @param obj 对象参数
* @param vm 模板路径
* @return
* String
*/
public String parse(Object obj, String vm){
Template template = templateBuffer.get(PREFIX + vm);
if(template == null){
template = velocity.getTemplate(PREFIX + vm);
templateBuffer.put(PREFIX + vm, template);
}
VelocityContext context = new VelocityContext();
context.put("context", obj);
StringWriter sw = new StringWriter();
template.merge(context, sw);
return sw.toString();
}
}
实体类:
package entity;
import java.io.Serializable;
import java.util.List;
public class VmEntity implements Serializable
{
private static final long serialVersionUID = 1L;
private String vm1;
private List<String> listVm2;
public String getVm1()
{
return vm1;
}
public void setVm1(String vm1)
{
this.vm1 = vm1;
}
public List<String> getlistVm2()
{
return listVm2;
}
public void setlistVm2(List<String> listVm2)
{
this.listVm2 = listVm2;
}
}
模板1:
<vm>
<vm1>${context.vm1}</vm1>
</vm>模板2:
<vm>
#foreach($vm in ${context.listVm2})
<vm1>$vm</vm1>
#end
</vm>测试代码:
public class Test
{
public static void main(String[] args)
{
VmEntity ve = new VmEntity();
ve.setVm1("闭上眼让梦冬眠");
String str = VMParserUtil.getInstance().parse(ve, "test1.vm");
/*ArrayList<String> list = new ArrayList<>();
list.add("闭上眼让梦冬眠-list");
list.add("闭上眼让梦冬眠-list-1");
ve.setlistVm2(list);
String str = VMParserUtil.getInstance().parse(ve, "test2.vm");*/
System.out.println(str);
}
}
commons-beanutils-1.7.0.jar
commons-collections-3.2.1.jar
commons-digester-1.8.jar
velocity-1.7.jar
velocity-1.7-dep.jar
velocity-tools-2.0.jar
目录结构:
VMParserUtil帮助类
package util;
import java.io.StringWriter;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
public class VMParserUtil{
private static VMParserUtil parser = new VMParserUtil();
private VelocityEngine velocity = null;
private Map<String, Template> templateBuffer = null;
private static final String PREFIX = "/vm/";
private VMParserUtil(){
Properties p = new Properties();
p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
p.setProperty(Velocity.ENCODING_DEFAULT, "UTF-8");
p.setProperty(Velocity.INPUT_ENCODING, "UTF-8");
p.setProperty(Velocity.OUTPUT_ENCODING, "UTF-8");
velocity = new VelocityEngine();
velocity.init(p);
templateBuffer = new ConcurrentHashMap<String, Template>();
}
public static VMParserUtil getInstance(){
return parser;
}
/**
* 解析velocity模板
* @Title parse
* @param obj 对象参数
* @param vm 模板路径
* @return
* String
*/
public String parse(Object obj, String vm){
Template template = templateBuffer.get(PREFIX + vm);
if(template == null){
template = velocity.getTemplate(PREFIX + vm);
templateBuffer.put(PREFIX + vm, template);
}
VelocityContext context = new VelocityContext();
context.put("context", obj);
StringWriter sw = new StringWriter();
template.merge(context, sw);
return sw.toString();
}
}
实体类:
package entity;
import java.io.Serializable;
import java.util.List;
public class VmEntity implements Serializable
{
private static final long serialVersionUID = 1L;
private String vm1;
private List<String> listVm2;
public String getVm1()
{
return vm1;
}
public void setVm1(String vm1)
{
this.vm1 = vm1;
}
public List<String> getlistVm2()
{
return listVm2;
}
public void setlistVm2(List<String> listVm2)
{
this.listVm2 = listVm2;
}
}
模板1:
<vm>
<vm1>${context.vm1}</vm1>
</vm>模板2:
<vm>
#foreach($vm in ${context.listVm2})
<vm1>$vm</vm1>
#end
</vm>测试代码:
public class Test
{
public static void main(String[] args)
{
VmEntity ve = new VmEntity();
ve.setVm1("闭上眼让梦冬眠");
String str = VMParserUtil.getInstance().parse(ve, "test1.vm");
/*ArrayList<String> list = new ArrayList<>();
list.add("闭上眼让梦冬眠-list");
list.add("闭上眼让梦冬眠-list-1");
ve.setlistVm2(list);
String str = VMParserUtil.getInstance().parse(ve, "test2.vm");*/
System.out.println(str);
}
}
相关文章推荐
- html文件中jquery与velocity变量中的$冲突的解决方法
- velocity显示List与Map的方法详细解析
- JAVA velocity模板引擎使用实例
- Velocity基本语法介绍
- Spring MVC 集成 Velocity 配置
- velocity 之坑:不同枚举类(enum)有相同的静态(static)方法,无法访问第二个枚举类
- Velocity入门例子
- Velocity读取后台数据
- 树形结构
- Velocity快速入门教程-脚本语法详解(转)
- velocity 注释语法
- velocity include
- Velocity浅析及与Jsp、Freemarker对比
- Velocity 官方实例学习二 (context_example)
- Velocity 官方实例学习一 (app_example1)
- Velocity入门指南——第一章 快速入门
- Velocity入门指南——第二章 注释
- 一些好用的Eclipse 3.0插件
- 一些好用的Eclipse 3.0插件
- DirectX粒子--雪花