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了.
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了.
相关文章推荐
- 10_基本数据类型自动转换_强制转型_类型提升问题
- 黑马程序员——数据类型自动转换问题
- 解决struts2基础数据类型自动转换,输入字母报错问题!
- dsp调试中数据类型自动转换遇到的问题
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题
- 数据类型自动转换规则
- void相关的无类型变量在使用时必须强制数据类型转换问题。
- Java数据类型的转换:隐式(自动)转换与强制转换
- Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)
- Object.ToString函数在转换日期类型数据时的精度问题
- char *数据转换成string数据时数据后会自动加上一个随机字符问题
- ASP.NET AJAX客户端编程教程(3)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- [SQL]不要让SQLServer帮你自动转换SQL命令中的数据类型
- 简单问题(1)---数据类型转换的潜规则
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- Sql 在将varchar值 '1,2,.. ' 转换成数据类型 int 时失败 的问题
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- Javascript 自动数据类型转换机制
- 数据类型自动转换和强制转换示例
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(8):服务器端和客户端数据类型的自动转换:数组类型