浏览 6309 次
锁定老帖子 主题:EL表达式,char类型?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-28
<c:if test="${contract.c_attri_id=='1'}">经销</c:if> 当时无法处理这个问题,于是一气之下将contract.c_attri_id对象的类型更改为String类型,该判断通过.当contract.c_attri_id为"1"时,那么以上代码将成功返回true,显示"经销". 后来询问我过去的老师,最终知道了这个问题产生的真正原因: 是这样的,EL和Java类型并不是一一对应的。 这是所有解释语言的特点,数据类型都少,便于自动转型和提高开发效率,比如JavaScript。 在你的这个情况下,contract.c_attri_id被转型为Long,想想java基础知识,char也可以表示整型数,对吧? 比如你的char型的'1',就被转型成了long型的49,你可以打印${contract.c_attri_id}看看。 等号右边的'1',被认为是字符串,而不是char类型,EL自动做转型,依据是等号左边的类型。 结果就是比较49==1。 怎么解决呢? 我觉得你的解决方式是对的,就是转成String类型。 java做业务开发的一个经验,针对JavaBean,就是尽量用对象类型,比如Long,String,Boolean。 减少不必要的麻烦。 性能上基本型是好,不过随着java5时代到来,你调用的API,比如Hibernate,对基本型都是包装为对等的对象的。 这样频繁的装箱拆箱,性能就打很大折扣了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |