Velocity官方指南-Velocity是如何工作的

原文网址  译者:方腾飞

基本模式

当你在一个应用程序或者一个servlet里,或者在其他任何一个地方使用Velocity时,通常按照如下方式处理:

  1. 初始化Velocity。Velocity可以使用两种模式,作为“单独的运行时实例”的单例模式(在下面的内容会介绍),你仅仅只需要初始化一次。
  2. 创建一个Context对象(后面会介绍这是什么)。
  3. 把你的数据对象添加到Context(上下文)。
  4. 选择一个模板。
  5. ‘合并’ 模板和你的数据输出。

在代码里通过org.apache.velocity.app.Velocity类使用单例模式,代码如下:

import java.io.StringWriter;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.MethodInvocationException;

Velocity.init();

VelocityContext context = new VelocityContext();

context.put( "name", new String("Velocity") );

Template template = null;

try
{
   template = Velocity.getTemplate("mytemplate.vm");
}
catch( ResourceNotFoundException rnfe )
{
   // couldn't find the template
}
catch( ParseErrorException pee )
{
  // syntax error: problem parsing the template
}
catch( MethodInvocationException mie )
{
  // something invoked in the template
  // threw an exception
}
catch( Exception e )
{}

StringWriter sw = new StringWriter();

template.merge( context, sw );

这是个基本的模式,它非常简单,不是吗?当你使用Velocity渲染一个模板的时候,通常会发生什么。你可能不会完全像这样写代码,所以我们提供几个工具类帮助你写代码。然而, 无论如何,按照上面的序列使用Velocity,它向我们展示了台前幕后发生了什么。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Velocity官方指南-Velocity是如何工作的



方 腾飞

花名清英,并发网(ifeve.com)创始人,畅销书《Java并发编程的艺术》作者,蚂蚁金服技术专家。目前工作于支付宝微贷事业部,关注互联网金融,并发编程和敏捷实践。微信公众号aliqinying。
FavoriteLoading添加本文到我的收藏
  • Trackback are closed
  • Comments (2)
    • AllenZhou
    • 05/25. 2015 8:49am

    你好,非常高那些你的分享,有个弱弱的问题,请教下 第19行
    template = Velocity.getTemplate(“mytemplate.vm”);
    加载模板文件的相对路径是以什么为基准?
    我想做一个 maven 插件,在 complie 之前希望通过 velocity 模板创建 java 代码文件并参与编译的话,应该如何配置这个模板文件路径,以及输出的 java 文件路径?
    谢谢!

    • 需要配置资源加载器,http://velocity.apache.org/engine/devel/developer-guide.html#Configuring_Resource_Loaders
      如果org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader,则在类路径下加载。

You must be logged in to post a comment.

return top