Java:模板引擎Velocity的基本使用

Velocity is a Java-based template engine. It permits anyone to use a simple yet powerful template language to reference objects defined in Java code.

译文:Velocity是一个基于Java的模板引擎。它允许任何人使用简单而强大的模板语言来引用Java代码中定义的对象。

工作原理:

输出:模板字符串 + 模板数据 

=> 模板引擎 => 

输出:字符串

文档

文件结构

├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── example
        │           └── demo
        │               └── Demo.java
        └── resources
            └── templates
                └── hello.vm

依赖 pom.xml

<!--模板引擎velocity -->
<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity-engine-core -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

代码示例 Demo.java

package com.example.demo;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;

import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

public class Demo {
    
    
    public static void main(String[] args) {
    
    

        // 初始化模板引擎
        VelocityEngine ve = new VelocityEngine();
        ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
        ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
        ve.init();

        // 模板变量
        VelocityContext context = new VelocityContext();

        // 变量
        context.put("name", "Tom");

        // list 变量
        List<String> list = new ArrayList<>();
        list.add("曹操");
        list.add("刘备");
        context.put("list", list);

        // 获取模板文件
        Template template = ve.getTemplate("templates/hello.vm");

        // 输出
        StringWriter sw = new StringWriter();
        template.merge(context, sw);

        System.out.println(sw.toString());

    }
}

模板 hello.vm

## 这是注释,注释不会被输出
## 变量
hi ${name}


## 模板内设置变量
#set($bar = "Jack")
${bar}


## for循环
#foreach ($item in $list)
${item}
#end


## if判断
#if($name == 'Tom')
确实是Tom
#end

输出结果

hi Tom


Jack


曹操
刘备


确实是Tom

循环体$foreach中可以使用的变量

$foreach.first # 第一个元素
$foreach.last  # 最后一个元素
$foreach.index # 0开始的序号
$foreach.count # 1开始的序号

参考文章

  1. Velocity教程

猜你喜欢

转载自blog.csdn.net/mouday/article/details/132496873