• Java使用 VelocityEngine模板引擎快速生成HTML等各种代码


    https://blog.csdn.net/icannotdebug/article/details/79725297

    一、简介

    Velocity 是一个基于 Java 的模板引擎框架,提供的模板语言可以使用在 Java 中定义的对象和变量上
    说白了就类似于jsp,java中定义对应的对象,模板载入后,可以对象信息动态加载入模板

    二、使用方式

    1、引入pom(老生常谈)

    <dependency>
         <groupId>org.apache.velocity</groupId>
         <artifactId>velocity-engine-core</artifactId>
         <version>2.0</version>
    </dependency>

    最新的开发包和maven配置

    2、创建模板文件(Hellovelocity.vm)

    #set( $iAmVariable = "good!" )
    Welcome $name to velocity.com
    today is $date.
    #foreach ($i in $list)
        $i
    #end
    $iAmVariable

    3、编写测试main

    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.Date;
    import java.util.List;
    /**
     * @author: <a href="mailto:wb-lzl282164@alibaba-inc.com">李智龙</a>
     * @date: 2018/3/28
     */
    public class HelloVelocity {
        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();
            // 载入(获取)模板对象
            Template t = ve.getTemplate("hellovelocity.vm");
            VelocityContext ctx = new VelocityContext();
            // 域对象加入参数值
            ctx.put("name", "李智龙");
            ctx.put("date", (new Date()).toString());
            // list集合
            List temp = new ArrayList();
            temp.add("1");
            temp.add("2");
            ctx.put("list", temp);
    
            StringWriter sw = new StringWriter();
            t.merge(ctx, sw);
    
            System.out.println(sw.toString());
        }
    }

    4、打印结果

    Welcome 李智龙 to velocity.com
    today is Wed Mar 28 11:03:04 CST 2018.
        1
        2
    good!

    三、使用模板的目的

    如果说使用模板生成java代码,或者开发对应的代码,目前有很多封装好的更好用的开源框架,
    使用Velocity自己编写一个适用的框架也是可以的(很蛋疼吧)。
    不过个人觉得Velocity最好的使用场景,是在文件模板的生成方面,现在有很多场景需要打印报表,
    生成对应的文件,而Velocity便是一个过渡的比较好用的轻量的插件。后面也会提供相应的例子

    Velocity模板引擎实战:动态生成HTML、Word、Excel等报表

    四、模板的基本语法

    1、定义变量

    #set($name =“Jackie”)
    #set($hello =“hello $name”)
    Jackie赋值给$name,此时$hello的值为hello Jackie

    2、变量使用

    模板文件可以使用name或

    {name}定义变量,建议使用后者,name和

    names 的两个变量,如果不选用大括号的话,引擎就没有办法正确识别$names 这个变量。

    3、循环

    #foreach($element in $list)
     This is $element
     $velocityCount
    #end

    4、条件语句

    #if(condition)
    ...
    #elseif(condition)
    …
    #else
    …
    #end

    5、关系操作符

    AND、OR 和 NOT 操作符,分别对应&&、||和! 

    6、函数

    #macro(macroName arg1 arg2 …)
    ...
    #end
    // 对应函数
    #macroName(arg1 arg2 …)

    示例

    #macro(sayHello $name)
    hello $name
    #end
    #sayHello(“velocity”)

    7、解析和引入模板

    temp.vm 文件:

    #set($name =“velocity”)

    parse.vm:

    #parse(“temp.vm”)
    输出结果为:velocity

    include.vm:

    #include(“temp.vm”)
    输出结果为:#set($name =“velocity”)
  • 相关阅读:
    QTP的那些事连接oracle的方法
    QTP的那些事判定页面是否存在某个文本内容
    java计算的小数加减法计算有错误解决
    自由者-Hdsome安身立鸣博客园
    转:经典URL重写
    常见的类整理
    TD tree体验
    《大道至简》读后感
    SqlDataReader使用
    ExecuteScalar
  • 原文地址:https://www.cnblogs.com/xiang--liu/p/9710205.html
Copyright © 2020-2023  润新知