velocity中比较的问题

jeejar 发布于 2012/02/16 15:54
阅读 8K+
收藏 1

对于velocity来说,比较尤其是涉及到不等比较(大于或者小于)都是比较难实现的。现在我想把页面上的file size分类显示(Bytes、MB、GB),于是就涉及到比较filesize大小的问题,请问一下目前有没有比较好的办法实现呢?

比如下面的代码:

#if ($filesize > 1024 && $filesize < 1048567)
    #set($ksize = $filesize%1024)
    <div class="mlt">File Size: $ksize KB
#elseif ($filesize > 1048567 && $filesize < 1073731824)
    #set($msize=$filesize%1048567)
    <div class="mlt">File Size: $msize MB
#elseif ($filesize > 1073731824)
    #($gsize=$filesize%1073731824)
    <div class="mlt">File Size: $gsize GB
#else
    <div class="mlt">File Size: $filesize Bytes
#end

加载中
0
jeejar
jeejar

引用来自“antipro”的答案

在velocity中加入一个Integer,然后用Integer.parse()方法把字符串转成数字,然后再比较。

谢谢你的提示哈

问题解决了,velocity无法直接使用Integer,但是可以先定义一个整型变量,使用这个整型变量的parseInt(“string”)转换,示例代码如下:

#set($intString = "9")
#set($Integer = 0)
$Integer.parseInt($intString)
0
红薯
红薯
你可以把这段代码专门写一个宏,以后方便引用
0
jeejar
jeejar

引用来自“红薯”的答案

你可以把这段代码专门写一个宏,以后方便引用

不好意思,是我没有描述清楚哈,我重新说一下我的问题。

这段代码写出来了,但是解析的时候总是直接跳到#else,看起来像是前面的比较都是false,所以我不知道怎么调整里面的比较代码

0
antipro
antipro
$filesize 实际上是什么类型?
0
jeejar
jeejar

引用来自“antipro”的答案

$filesize 实际上是什么类型?
实际上该是string吧,从这里获得的:#set($filesize = "#field('Size')")
红薯
红薯
不可以在 #set 语句中调用宏
红薯
红薯
不支持这种调用方式
0
antipro
antipro
字符串如何与数字进行比较?
0
jeejar
jeejar

引用来自“antipro”的答案

字符串如何与数字进行比较?
据说velocity能转换,但是现在看起来不能转换,问题就是如何进行比较?我重复问了一遍我的问题,呵呵
0
antipro
antipro
在velocity中加入一个Integer,然后用Integer.parse()方法把字符串转成数字,然后再比较。
0
黄龍
黄龍
没有记错的话,velocity是可以直接执行java代码的,所以java怎么做,velocity就怎么写是了!
0
antipro
antipro

引用来自“HL_Simon”的答案

没有记错的话,velocity是可以直接执行java代码的,所以java怎么做,velocity就怎么写是了!
那我问你,JAVA里面可以这么比较吗 "abc">123 
返回顶部
顶部