Velocity 读取字符串模板生成代码

简介: 本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/49428277 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys1,遇到问题之前使用 freeMarker 开发 cms系统,生成html。 后来页面不用jsp,开发了,换成velocity展示了

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/49428277 未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,遇到问题

之前使用 freeMarker 开发 cms系统,生成html。
后来页面不用jsp,开发了,换成velocity展示了。
想着生成页面也使用velocity。
但是发现读取文件的类库加载不进来。

2,解决

参考官方网站例子:
http://velocity.apache.org/engine/devel/developer-guide.html


import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;

import java.io.StringWriter;
import java.util.Date;

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

        Velocity.init();

        /* lets make a Context and put data into it */

        VelocityContext context = new VelocityContext();

        context.put("name", "Velocity");
        context.put("project", "Jakarta");
        context.put("now", new Date());

        /* lets make our own string to render */

        String str = "We are using $project $name to render this. $now";
        StringWriter stringWriter = new StringWriter();
        Velocity.evaluate(context, stringWriter, "mystring", str);
        System.out.println(" string : " + stringWriter);

    }
}

读取文件从一个字符串读取模板,生成文件写到一个字符串里面。
读取文件的也不麻烦
Velocity.mergeTemplate(“testtemplate.vm”, context, w );

3,类库加入

因为日期是Date,需要对时间进行格式化。
在web里面可以使用toolbox引入,但是在main函数里面不知道咋加载进去。
找了半天,其实非常简单,直接new一个对象就行。


import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;

import java.io.StringWriter;
import java.util.Date;

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


        VelocityEngine velocityEngine = new VelocityEngine();

        velocityEngine.init();

        Velocity.init();

        /* lets make a Context and put data into it */

        VelocityContext context = new VelocityContext();

        context.put("name", "Velocity");
        context.put("project", "Jakarta");
        context.put("now", new Date());
        context.put("dateFormatUtils", new org.apache.commons.lang.time.DateFormatUtils());

        /* lets make our own string to render */

        String str = "We are using $project $name to render this. 中文测试  $!dateFormatUtils.format($!now,'yyyy-MM-dd')";
        StringWriter stringWriter = new StringWriter();
        Velocity.evaluate(context, stringWriter, "mystring", str);
        System.out.println(" string : " + stringWriter);

    }
}

就一行:
context.put(“dateFormatUtils”, new org.apache.commons.lang.time.DateFormatUtils());

直接把新对象放入进去就可以使用格式化函数了。

$!dateFormatUtils.format($!now,'yyyy-MM-dd')
目录
相关文章
|
存储 安全 Java
Spring Boot中的文件下载实现
Spring Boot中的文件下载实现
|
缓存 关系型数据库 MySQL
业务中的字典表的MySQL实现方案
业务中的字典表的MySQL实现方案
742 0
业务中的字典表的MySQL实现方案
|
监控 安全 网络协议
什么是 TACACS/TACACS+ 身份验证?
【5月更文挑战第1天】
1880 1
什么是 TACACS/TACACS+ 身份验证?
|
JSON 数据格式
解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB
解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB
解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 吴恩达:机器学习的六个核心算法!
吴恩达教授在《The Batch》周报中介绍了机器学习领域的六个基础算法:线性回归、逻辑回归、梯度下降、神经网络、决策树和k均值聚类。这些算法是现代AI的基石,涵盖了从简单的统计建模到复杂的深度学习。线性回归用于连续变量预测,逻辑回归用于二分类,梯度下降用于优化模型参数,神经网络处理非线性关系,决策树提供直观的分类规则,而k均值聚类则用于无监督学习中的数据分组。这些算法各有优缺点,广泛应用于经济学、金融、医学、市场营销等多个领域。通过不断学习和实践,我们可以更好地掌握这些工具,发掘智能的乐趣。
917 1
算法金 | 吴恩达:机器学习的六个核心算法!
|
机器学习/深度学习 人工智能 算法
【机器学习】十大算法之一 “线性回归”
机器学习是人工智能的一个重要分支,它利用各种算法和模型,通过分析和理解数据,让机器学习到一个智能模型,从而对数据作出预测和判断。回归分析是一种基于统计学方法的数学分析技术,用于描述两个或多个变量之间的关系。线性回归是一种最简单的回归分析方法,它使用最小二乘法来拟合一个关于自变量的线性函数,以预测其与因变量之间的相互作用关系。线性回归是机器学习领域中最为常见的算法之一,它是一个简单但非常有效的算法,常用于数据挖掘和机器学习的预测分析,例如房价预测、销售额预测等等。
1092 0
【机器学习】十大算法之一 “线性回归”
|
消息中间件 存储 JSON
Flink on yarn 实时日志收集到 kafka 打造日志检索系统
背景 在 Flink on yarn 的模式下,程序运行的日志会分散的存储在不同的 DN 上,当 Flink 任务发生异常的时候,我们需要查看日志来定位问题,一般我们会选择通过 Flink UI 上面的 logs 来查看日志,或者登录到对应的服务器上去查看,但是在任务日志量非常大的情况下,生成的日志文件就非常多,这对于我们排查问题来说,就造成了很大的不便,所以,我们需要有一种统一的日志收集,检索,展示的方案来帮忙我们快速的分析日志,定位问题.
|
API Docker 容器
超实用工具分享!Gotenberg,让你的文档转换PDF无缝对接
超实用工具分享!Gotenberg,让你的文档转换PDF无缝对接
1395 4
QGS
|
Prometheus 监控 Cloud Native
(linux-x86-arm64)麒麟V10安装openjdk+Grafana-7.2.0+Prometheus-2.16.0
记(linux-x86-arm64)麒麟V10安装openjdk+Grafana-7.2.0+Prometheus-2.16.0
QGS
2135 0
(linux-x86-arm64)麒麟V10安装openjdk+Grafana-7.2.0+Prometheus-2.16.0
|
传感器 消息中间件 网络协议
Paho MQTT 客户端接入阿里云物联网平台(2)| 学习笔记
快速学习 Paho MQTT 客户端接入阿里云物联网平台(2)
1439 1
Paho MQTT 客户端接入阿里云物联网平台(2)| 学习笔记

热门文章

最新文章