velocity模板使用(日常记录)

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







                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值