velocity笔记(二)VelocityTools 中各种工具类的介绍与使用

本文详细介绍了VelocityTools中的各种工具类,如DateTool、NumberTool、MathTool、DisplayTool、EscapeTool等,通过实例展示了如何在模板中使用这些工具进行日期格式化、数值操作、字符串处理和HTML转义。同时,还涵盖了ContextTool和RenderTool的用法,以及如何进行排序和集合操作。通过配置和测试方法,读者可以快速掌握VelocityTools的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

我们已经知道了velocity的基础知识,现在有一个工具包,VelocityTools

在这里插入图片描述

GenericTools 使用

什么叫做GenericTools

在这里插入图片描述
总之就是工具类,我们学习这个,就是学习这个工具类的api

搭建环境

   <!--        velocity  的核心包-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>2.2</version>
        </dependency>
        <!--        velocity  的工具包   要使用人家工具包里面的api,就需要导入工具包-->

        <dependency>
            <groupId>org.apache.velocity.tools</groupId>
            <artifactId>velocity-tools-generic</artifactId>
            <version>3.0</version>
        </dependency>

快速入门

项目中已经导入了依赖,我们自己创建一个模板,在这个模板里面就可以使用工具类了。

我们查看工具类的文档,现在我们要在模板里面定义事件,那么在工具类的api里面找到相关事件的类。

这个文档里面有很多的类,每一个类里面有很多的方法,我们就是使用这个类里面的方法

比如这个时间,就是一个类,这个类里面有很多的方法
在这里插入图片描述
这个类里面的一些方法是

在这里插入图片描述
使用步骤:

写一个vm,里面使用工具类

在这里插入图片描述
写一个配置的xml
在这里插入图片描述
写测试方法


public class ToolsTest {

    public static void main(String[] args) throws IOException {
//        1 创建引擎对象

        VelocityEngine engine = new VelocityEngine();
//        2 设置模板的加载路径

        engine.setProperty(Velocity.RESOURCE_LOADER,"class");
        engine.setProperty("class.resource.loader.class","org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
//        3  初始化引擎

        engine.init();
//        4  加载tools.xml配置文件

        ToolManager toolManager = new ToolManager();
        toolManager.configure("tools.xml");
//        5  加载模板

        Template template = engine.getTemplate("vm/tools.vm");
//        6  设置数据

        ToolContext context = toolManager.createContext();
        context.put("now",new Date());
//        7 合并数据到模板

        FileWriter fileWriter = new FileWriter("E:\\java_springboot_code\\springboot_first\\01_springboot_mybatis\\src\\main\\resources\\vm\\tools.html");
        template.merge(context,fileWriter);
//        8 释放资源

        fileWriter.close();
    }
}

最后生成的html 是
在这里插入图片描述

工具类以及案例

DateTool

在这里插入图片描述

在这里插入图片描述

##  $data  就是VelocityTool  的key,也就是工具类里面的类名
当前时间:  $date.get('yyyy-M-d H:m:s')

年:$date.getYear()
月:$date.getMonth()
日:$date.getDay()

年:$date.getYear($now)
月:$date.getMonth($now)
日:$date.getDay($now)

当前时间:  $date.getDate()
当前时间:  $date.get('yyyy-M-d H:m:s')
格式化时间: $date.format($now)
    $date.format("yyyy/MM/dd",$now)

最后生成的HTML是

在这里插入图片描述

NumberTool

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>

<tools>
    <toolbox  scope = "application">
        <tool class="org.apache.velocity.tools.generic.DateTool" format = "yyyy-MM-dd"> </tool>
        <tool class="org.apache.velocity.tools.generic.NumberTool" > </tool>
    </toolbox>
</tools>
原始数据:  $mynumber
## $number 工具类   里面有很多的方法
格式化:    $number.format($mynumber)
取整:  $number.integer($mynumber)
将字符串转为number  $number.toNumber($mynumber1)

在这里插入图片描述

MathTool

在这里插入图片描述
在这里插入图片描述
在模板里面要对这两个数据进行运算

在这里插入图片描述

num1+num2  = $math.add($num1,$num2)
num1-num2  = $math.sub($num1,$num2)
num1*num2  = $math.mul($num1,$num2)
num1/num2  = $math.div($num1,$num2)

向上取整: $math.ceil($num3)
向下取整: $math.floor($num3)

在这里插入图片描述

DisplayTool

在这里插入图片描述

在这里插入图片描述


默认输出格式:  $display.list($list)
自定义分隔符    $display.list($list,',')

字符串截取  默认30个长度   $display.truncate($str)
    $display.truncate($str,10)
    $display.truncate($str,10,"10")
## alt 方法用于判断给的数据是否为空,如果为空,展示默认值
不为空:  $display.alt($num1,"hhhh")

在这里插入图片描述

EscapeTool

在这里插入图片描述

在这里插入图片描述

$esc.velocity($HTML)
$esc.html($HTML)
$esc.url($HTML)
      <tool class="org.apache.velocity.tools.generic.EscapeTool" > </tool>

FieldTool

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  <tool class="org.apache.velocity.tools.generic.FieldTool" 
  include="com.pojo.User" > </tool>

在这里插入图片描述
我们还可以在context里面存对象,之后利用这个工具,获取到这个对象里面的静态变量

在这里插入图片描述
在这里插入图片描述

ClassTool

hh

ContextTool

在这里插入图片描述
这个就是帮助我们拿到在context里面存的数据


<tools>
    <toolbox  scope = "application">
        <tool class="org.apache.velocity.tools.generic.DateTool" format = "yyyy-MM-dd"> </tool>
        <tool class="org.apache.velocity.tools.generic.NumberTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.MathTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.DisplayTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.EscapeTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.FieldTool" include="com.pojo.User" > </tool>

    </toolbox>


ContextTool 对于这个工具,必须放到这个request里面才可以生效
    <toolbox scope="request">
        <tool class="org.apache.velocity.tools.generic.ContextTool" > </tool>
    </toolbox>
</tools>

在这里插入图片描述


获取到context中所有的key:  $context.keys
获取到context中所有的value:$context.values
获取到所有的key-value 值
#foreach($key in $context.keys)
    $key ----  $context.get($key)
#end

在这里插入图片描述

RenderTool

在这里插入图片描述
这个工具的意思是,我们自己在这个页面定义的数据,如果表达式变为字符串了,就不能执行了,现在想要将字符串的表达式进行执行,那么就可以使用这个工具

<tools>
    <toolbox  scope = "application">
        <tool class="org.apache.velocity.tools.generic.DateTool" format = "yyyy-MM-dd"> </tool>
        <tool class="org.apache.velocity.tools.generic.NumberTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.MathTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.DisplayTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.EscapeTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.FieldTool" include="com.pojo.User" > </tool>

    </toolbox>

    <toolbox scope="request">
        <tool class="org.apache.velocity.tools.generic.ContextTool" > </tool>
        <tool class="org.apache.velocity.tools.generic.RenderTool" > </tool>
    </toolbox>
</tools>

在这里插入图片描述

##定义一个list集合
#set($list=[1,2,2,3])

## 设置变量为一个字符串
#set($object = '$list')
#set($method = 'size()')

##获取集合的长度
$render.eval("$object.$method")

生成的为

在这里插入图片描述

SortTool

在这里插入图片描述
在这里插入图片描述
先往context里面存放list集合数据,里面的数据是杂乱无章的

在这里插入图片描述

        <tool class="org.apache.velocity.tools.generic.SortTool" > </tool>

在这里插入图片描述
在这里插入图片描述
以上是有序的

在这里插入图片描述
在这里插入图片描述
以上对于对象是默认升序的,现在我们想要降序咋办

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CollectionTool

在这里插入图片描述
在这里插入图片描述
除了有SortTool 的方法功能,还有

将字符串根据某个规则 生成为集合

#set($str="44,88,99")
$str.split(",")

在这里插入图片描述

XmlTool

在这里插入图片描述
创建一个xml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一写代码就开心

你的打赏将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值