Velocity开发指南

简介

Velocity 历史悠久的免费java模板引擎。官网:http://velocity.apache.org/

Velocity是基于Java的模板引擎,这是一种简单而强大的开发工具,可让您轻松创建和呈现用于格式化和显示数据的文档

 

*.vm :Velocity 模板文件

VTL : Velocity Template Language

使用Velocity模板引擎时的需要关注两部分:Velocity模板Java代码调用

 

Velocity模板由VTL引擎上下文对象构成;

Java代码调用部分则负责初始Velocity引擎构建引擎上下文对象加载Velocity模板启动模版渲染

而Velocity模板与Java代码调用部分通信的纽带就是引擎上下文对象了。

 

Velocity被移植到不同的平台上,如.Net的NVelocity和js的Velocity.js,虽然各平台在使用和实现上略有差别,但大部分语法和引擎核心的实现是一致的,因此学习成本降低不少哦。

 

版本要求

Velocity2.1以上版本要求jdk1.8以上

 

Velocity2.2的maven 依赖

<dependency>
  <groupId>org.apache.velocity</groupId>
  <artifactId>velocity-engine-core</artifactId>
  <version>2.2</version>
</dependency>
​
<dependency>
  <groupId>org.apache.velocity.tools</groupId>
  <artifactId>velocity-tools-generic</artifactId>
  <version>3.0</version>
</dependency>
​
<dependency>
  <groupId>org.apache.velocity.tools</groupId>
  <artifactId>velocity-tools-view</artifactId>
  <version>3.0</version>
</dependency>
​
<dependency>
  <groupId>org.apache.velocity.tools</groupId>
  <artifactId>velocity-tools-view-jsp</artifactId>
  <version>3.0</version>
</dependency>

 

其它所有版本官方下载地址:http://archive.apache.org/dist/velocity/engine/

 

Velocity1.7要求jdk1.4版本以上。官网地址:http://velocity.apache.org/engine/1.7/

1.7 api doc地址:https://tool.oschina.net/apidocs/apidoc?api=velocity-1.7

 

 

快速入门

Example2.java

import java.io.StringWriter;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.VelocityContext;
​
public class Example2
{
    public static void main( String args[] )
    {
        /* 首先,初始化运行时引擎,使用默认的配置 */
​
        Velocity.init();
​
        /* 创建Context对象,然后把数据放进去 */
​
        VelocityContext context = new VelocityContext();
​
        context.put("name", "Velocity");
        context.put("project", "Jakarta");
​
        /* 渲染模板 */
​
        StringWriter w = new StringWriter();
​
        Velocity.mergeTemplate("testtemplate.vm", context, w );
        System.out.println(" template : " + w );
​
        /* 渲染字符串 */
​
        String s = "We are using $project $name to render this.";
        w = new StringWriter();
        Velocity.evaluate( context, w, "mystring", s );
        System.out.println(" string : " + w );
    }
}

 

在运行程序之前,我们需要把模板文件testtemplate.vm放到与程序相同的目录下(因为我们使用默认配置,默认配置中指定的模板加载路径就是程序的当前目录)

testtemplate.vm

Hi! This $name from the $project project.

 

总结

首先,你还是需要先创建一个context,放进你需要的数据。

然后合并内容

 

Velocity的Java编码

以下内容转自:https://www.cnblogs.com/fsjohnhuang/p/4112866.html 肥仔John

模板与宿主环境通信

模板指的是使用VTL编写的Velocity模板,宿主环境指的是Java代码调用部分。而两者通信的纽带就是引擎上下文对象( VelocityContext实例 ),下面是常用的 VelocityContext实例 方法。

 

// 构造函数,入参为上下文的键值对集
VelocityContext(Map context)
// 添加上下文的键值对
Object put(String key, Object value)
// 从上下文获取指定键的值
Object get(String key)
// 检查上下文中是否存在指定的键值对
boolean containsKey(Object key)
// 获取所有键
Object[] getKeys()
// 移除指定键
Object remove(Object key)
// 获取上下文链中邻近的上下文对象
Context getChainedContext()

 

宿主环境向模板传值

// 1. 通过构造函数传值
HashMap<String, String> baseCtx = new HashMap<String, String>();
baseCtx.put("version", "1");
VelocityContext ctx = new VelocityContext(baseCtx);
​
// 2. 通过put传值
ctx.put("author", "fsjohnhuang");

 

注意键值对中值的数据类型为

Integer、Long等简单数据类型的装箱类型;

String类型

Object子类

Object[] 数组类型,从1.6开始Velocity将数组类型视为 java.util.List 类型看待,因此模板中可调用 size() 、 get(intindex) 和 isEmpty() 的变量方法;

java.util.Collection子类;

java.util.Map子类;

java.util.Iterator对象;

java.util.Enumer

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值