Velocity模板引擎工具类

在老大的指示下,我将Velocity的模板生成自己做了一个工具类,方便后面再次使用

1.思考:需要哪些参数?需要哪些返回值?

1>按照以往的经验来讲使用Velocity模板引擎只需要两个参数
    1)html页面(任何形式都可以)
    2)页面参数(最好是map类型)
2>生成的页面返回值
    返回String类型

2.实现问题:作为参数的html页面,我们需要用什么形式获取?

1>String形式
2>template形式,或者html地址传进来

第一种比较灵活,不管html源头是vm页面还是字符串都可以处理,第二种灵活性降低了,并且对
velocity本身的依赖性变强了,主要还是因为第二种的我没有尝试成功,只能选择第一种了。

3.实现代码

import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import java.io.StringWriter;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
/**
* Velocity模板生成html页面工具类
*/
public class VelocityTransformHelper {
/**
* 将html模板,放入参数
* @param template
* @param param
* @return
*/
public String getHtmlString(String template, Map<String,Object> param){
VelocityEngine velocityEngine = new VelocityEngine();
Properties props = new Properties();
props.put("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.SimpleLog4JLogSystem");
props.put("runtime.log.logsystem.log4j.category", "velocity");
props.put("runtime.log.logsystem.log4j.logger", "velocity");
velocityEngine.init(props);
VelocityContext vcl=new VelocityContext();
Iterator iter = param.entrySet().iterator();
while (iter.hasNext()){
Map.Entry entry = (Map.Entry) iter.next();
String key = (String)entry.getKey();
Object val = entry.getValue();
vcl.put(key,val);
}
StringWriter sw = new StringWriter();
velocityEngine.evaluate(vcl, sw,"",template);    
return sw.toString();
}
}

至于如何获得vm文件中的内容,我采用了java的jar包去实现,PathMatchingResourcePatternResolver在转换成String流,也算是曲线救国了,大家如果知道如何获取vm页面的template的方法,请告知在下~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值