注意:变量中不能有空格
package utils;
import java.io.StringWriter;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang.StringUtils;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import com.jje.common.utils.DateUtils;
public class TemplateUtils {
public static void main(String[] args) {
String json = "{\"Now_Tier\":\"黑卡\",\"Keep_Tier_Point\":\"0\",\"Keep_Tier_Night\":\"0\",\"Card_Number\":\"7700076294\",\"Current_Points\":\"0\",\"Current_Nights\":\"0\",\"Expire_Year\":\"2016\",\"Expire_Month\":\"10\",\"Expire_Day\":\"31\",\"Name\":\"winnie_test4\"}";
final Map<String,Object> map = JsonUtils.jsonToMap(json);
String r = "${Now_Tier}会员完成${Keep_Tier_Point}定级积分或${Keep_Tier_Night}定级次数即可保级。\n" +
"以下是您的会员卡${Card_Number}信息:\n" +
"已完成定级积分:${Current_Points}分\n" +
"已完成定级次数:${Current_Nights}次\n" +
"\n" +
"★10分钟内回复“XF”或直接点击”详情“即可直接续费金卡。如有疑问可拨打1010-1666。\n" +
"详情>";
String sr = TemplateUtils.renderTemplate(r, map);
System.out.println(sr);
}
public static String renderTemplate(String template,Map<String,Object> map) {
while(template.contains("%%")){
template = template.replace("%%","$");
}
map.put("dateUtils",new DateUtils());
map.put("stringUtils",new StringUtils());
// 初始化并取得Velocity引擎
VelocityEngine engine = initProperties();
// 取得velocity的上下文context
VelocityContext context = new VelocityContext();
// 把数据填入上下文
Iterator it = map.keySet().iterator();
while(it.hasNext()){
String key = (String) it.next();
Object value = map.get(key);
context.put(key,value);
}
StringWriter writer = new StringWriter();
engine.evaluate(context, writer, "", template);
return writer.toString();
}
private static VelocityEngine initProperties() {
Properties p = new Properties();
p.setProperty("resource.loader", "class");
p.setProperty("class.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
VelocityEngine ve = new VelocityEngine();
ve.init(p);
return ve;
}
}
分享到:
相关推荐
Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎Velocity模板引擎
Velocity实现模板
Velocity模板实例 Velocity模板实例 Velocity模板实例 Velocity模板实例
NULL 博文链接:https://vipshow.iteye.com/blog/1778614
Velocity.js 是velocity... 语法分析和模板渲染分离 基本完全支持velocity语法 浏览器使用支持模板之间相互引用,依据kissy模块加载机制 三个Helper,友好的数据模拟解决方案 Vim Syntax 标签:Velocity
Velocity模板入门简单DEMO, 代码有注解;
模板:velocity和freemarker的比较模板:velocity和freemarker的比较
Velocity模板邮件发送例子(Spring框架)(可通用,支持多扩展)Velocity模板邮件发送例子(Spring框架)(可通用,支持多扩展)
Velocity模板技术语法详细介绍,包括很详细的示例代码 1.变量………………………………………………………………………………1 2.循环………………………………………………………………………………2 3.条件语句...
Spring Boot项目 自动生成数据表模板,包括:Mapper、Mapper.xml、Service、Controller、html 自定义模板生成
SpringBoot集成Mybatis,velocity模板
Velocity模板(VM)语言介绍,简单的介绍,方便入门!
提供velocity模板的渲染功能 Installation npm install --save mat-velocity Usage var mat = require('mat') var velocity = require('mat-velocity') var rewrite = require('mat-rewrite') mat.task('daily', ...
velocity-web模板工具, 参考:http://blog.csdn.net/nature_fly088/article/details/52497779 和http://www.ibm.com/developerworks/cn/java/j-lo-velocity1/
Velocity模板解析,通过Velocity模板自动替换表达式中的变量
史上最全Velocity模板使用指南中文版,适合初学者读阅
先讲解velocity的基本使用以及基础语法 , 然后再讲解velocity 的进阶内容velocity Tools , 以及velocity作为web项目的视图改如何使用 , 每一部分都会有一个综合案例将常用的语法和工具串联起来。 第一部分我们会...
多视图渲染JspModelAndView,XmlModelAndView,TextStreamModelAndView,Velocity),还可自行定义渲染. 方便的验证和异常处理机制 http://download.csdn.net/source/1373612 源程序 请下载过的受好者留下QQ:方便联系