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类型,就不会出现类型比较失败的情况了。
认识比较肤浅表面,还希望大家多指点一下。
上一篇: 离婚后的女人怎么样
下一篇: webmagic爬虫--爬取简单网页