前段时间在工作中遇到了一个问题,在jsp页面通过JSTL判断对象是否等于'1',这个对象是char类型的,可是不管怎么操作,这个逻辑判断都是false,就算这个对象是字符'1',同样都是返回false.代码如下:
<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,对基本型都是包装为对等的对象的。
这样频繁的装箱拆箱,性能就打很大折扣了。
分享到:
相关推荐
el 表达式el 表达式el 表达式el 表达式el 表达式
el表达式介绍 el表达式使用帮助文档 el表达式介绍 el表达式使用帮助文档
关于学习el表达式的使用问题,详细简单,易于学习和理解。
EL表达式的简单介绍 一、JSP EL语言定义 E L(Expression Language) 目的:为了使JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法。它是一种...
el表达式,EL表达式言语和JSTL 很不错的资料啊
这是一个El表达式;一些常用的写法实例代码;
jspEL表达式 jspEL表达式 jspEL表达式 jspEL表达式
EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。 表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性.........
EL表达式使用文档,方便快速使用EL表达式
El表达式的用法机器语法的介绍!EL表达式被解析成数值表达式和方法表达式。其中,取值表达式去引用一个值,而方法表达式则是关联一个方法。一旦被解析之后,表达式能够被优化地计算一次或多次。
EL表达式的说明以及它在页面上的应用练习
EL表达式的一些操作。包括字符串处理,时间日期的格式化,数字处理
Web前端开发,开发jsp的时候。使用EL表达式以及JSTL标签时,所需的两个jar包。 ???????????????
让你掌握el表达式的所有语法,你可能用到的,或者不常见的应有尽有,可以说是对El表达式的诠释,让你摆脱EL表达式的困扰
el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍el表达式的相关介绍
el表达式,jsp.el表达式,页面el表达式,el表达式注释 el表达式的解释,el表达式的应用,java el表达式
EL表达式PPT,详细讲解了EL表达式用法
EL表达式言语和JSTL EL表达式言语和JSTL EL表达式言语和JSTL
el表达式用法及介绍 el的隐式对象介绍及用法 el的运算符
关于jsp中EL(Expression Language)表达式的相关简介