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

今天在使用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了.

转载于:https://www.cnblogs.com/jhxgtl/archive/2008/11/14/1333192.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值