您的位置:首页 > 其它

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);
}
}


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