最近写EL表达式发现了在页面不能显示的问题
抛出了如下异常:
Property xxx not found on type com.jwat.trade.entities.xxx
原因:
JAVA规范:包名小写,类名首字母大写,成员变量驼峰命名法(首字母小写)
由于EL表达式里面的类的成员变量首字母大写所以造成了无法识别,原因是EL表达式其实是调用了对应成员变量的getXxx的方法,采用的反射来调用方法的,内部原理我还不是很清楚,但大概猜的是由于要将成员变量首字母小写变成大写来拼getXxx方法,如果已经大写则会出现问题
再顺便说写另外几个以前遇到的问题吧
1.变量范围
如果不写明范围,如${a},则会依次从Page,Request,Session,Application的范围里面寻找a,如果找不到,页面会显示空白。
注意param的范围里的变量需要写明范围,省略会找不到
2. 【】与.的区别
这两种运算符都可以获取对象的属性,但用【】在有些情况下会更好写
当要存取的属性名称中包含一些特殊字符,如 . 或– 等并非字母或数字的符号,就一定要使用[ ]
§${sessionScope.user.first-name} 错误
§${sessionScope.user[‘first-name’]} 正确
3.判断两个el表达式相等
如${requestScope.t}和${sessionScope.T}
应该使用${requestScope.t==sessionScope.T}
不用这样${requestScope.t}==${sessionScope.T}
暂时就这么多吧,以后遇到再添加
最后加一个el表达式参考的链接,总结的很不错:EL表达式