需要添加的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);
}
}