Velocity字符串模板替换
示例:
?
?
public class VelocityTest { private static Properties props = new Properties(); static { props.setProperty(Velocity.INPUT_ENCODING, "UTF-8"); props.setProperty(Velocity.RESOURCE_LOADER, "class"); props.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); } public static void main(String[] args) { testStringVelocity(); testCommonsStringUtils(); } /** * 测试字符串模板替换 */ private static void testStringVelocity() { // 初始化并取得Velocity引擎 VelocityEngine engine = new VelocityEngine(props); // 字符串模版 String template = "${owner}:您的${type} : ${bill} 在 ${date} 日已支付成功"; // 取得velocity的上下文context VelocityContext context = new VelocityContext(); // 把数据填入上下文 context.put("owner", "nassir"); context.put("bill", "201203221000029763"); context.put("type", "订单"); context.put("date", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); StringWriter writer = new StringWriter(); engine.evaluate(context, writer, "", template); System.out.println(writer.toString()); } /** * 测试模板静态方法使用 */ private static void testCommonsStringUtils() { VelocityEngine engine = new VelocityEngine(); engine.init(); VelocityContext ctx = new VelocityContext(); ctx.put("stringUtils", new StringUtils()); ctx.put("comments", "this is a \n newline test"); ctx.put("newline", "\n"); ctx.put("break", "<br/>"); String template = "#set($comments = $stringUtils.replace($comments,$newline,$break))"; template += "$comments"; StringWriter writer = new StringWriter(); engine.evaluate(ctx, writer, "", template); System.out.println(writer.toString()); // assertEquals("this is a <br /> newline test", writer.toString()); }}?
?
运行结果:
?
nassir:您的订单 : 201203221000029763 在 ?2012-03-26 18:13:01 日已支付成功
this is a?
?newline test
?