您的位置:首页 > 其它

nvelocity模版数据类型自动转换的问题

2008-11-14 00:17 357 查看
今天在使用nvelocity模版的时候遇到一个问题,参考示例代码如下:

1 <form action="target.rails" method="get">

2 <input type="text" name="username"/>

3 <input type="text" name="age" value="-1"/>

4 <input type="submit" value="submit"/>

5 </form>

6 #if($age <= 1)

7 age 变量是以数值进行比较

8 #end

此时的submit请求url 则显式为..target.rails?username=name&age=-1

然而,#if($age <= 1)的判断条件却并不成立,想来nvelocity模版引擎是将所有从url请求得来的参数值,均以字符串类型来进行保存,自然,对于判断条件的比较也是以字符串来进行.所以当..target.rails?username=name&age=10,判断条件变为#if($age <= 3)时,返回为true,明显的,nvelocity并未将变量在判断条件中进行类型转换操作后再进行判断.

不过在Controller 中使用PropertyBag.Add("age",-1)向nvelocity模版输出变量age,则将自动由nvelocity模版引擎转换为数字类型进行保存,#if($age <= 1)表达式成立,生成html页面打印"age变量是以数值进行比较".

这个问题,不知道这算不算是nvelocity的一个BUG更或者其本身定义就是如此.当然,直接通过url传递参数也可以通过#set($age = $age + 0) 表达式进行一次计算操作,nvelocity引擎将会对在运算中对自动对$age变量进行数据类型转换,之后,再使用#($age <= -1)则自然就返回为True了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐