欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

velocity的类型比较

程序员文章站 2022-05-02 20:49:58
...

Velocity的比较本来很简单,只是它在比较基本类型的时候,不仅比较值是否相等,还会比较类型是否相同。
拿个很简单的例子来说一下:

VelocityContext context = new VelocityContext();
long aLong = 1234L;
context.put("aLong", aLong);

 

在velocity页面里,进行一个比较:

#if($!aLong==1234)
    类型比较成功
#else
    比较失败
#end

 

页面肯定会打印出"比较失败".因为在velocity中获取的变量aLong是long类型,而数字1234是默认为int类型的。虽然值相等,可是类型不同。
在velocity里,好像没有方法进行基础类型之间的强制转换,如果你知道的话,请回帖告诉我们。
那现在问题摆在这里,我们想看到"类型比较成功",应该怎么做呢?
修改java代码,把变量aLong强制转换成int类型:context.put("aLong",(int)aLong).
不过我不是很赞成这种做法,从long强制转换成int类型,很容易造成精度丢失。
还有一种比较直接的方法,不修改java代码,直接修改vm文件:

#if("$!aLong"=="1234")
    类型比较成功
#else
    比较失败
#end

 

把两边都变成了String类型,就不会出现类型比较失败的情况了。
认识比较肤浅表面,还希望大家多指点一下。

相关标签: velocity