JSP中的EL
Posted 十三弦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP中的EL相关的知识,希望对你有一定的参考价值。
1.为什么要使用EL
使用<jsp:getProperty>,只能访问bean属性的性质,不能访问嵌套性质。例如一个含有Dog对象的Person对象。
当然使用脚本可以工作,但是如果不想使用脚本呢?EL(表达式语言)可以使我们不受脚本的限制。
2.使用(.)操作符和[]操作符
使用.操作符时,第一个变量可以是一个隐式对象,也可以是一个属性。对应的,点号右边可以使一个映射键,也可以是一个bean性质。
只有当点号邮编是左边变量的一个映射键或bean性质时,点号操作符才能正常工作。如果左边是一个数组或List,或者不遵循正常的java命名规则(例如,foo.Person等类似于类名的命名),点号无法正常使用,[]是更好的点号。
可以这样访问元素
可以这样访问元素
如果中括号左边是一个数组或List,而且索引是一个String直接量,那么这个索引会强制转换为int。
上面的两种访问方法与下面的等价
3.EL隐式对象
EL隐式对象与JSP隐式对象不同,除了pageContext是真正的引用之外,其他隐式对象都是简单的Map(名/值对)。
4.Map作用域对象和属性绑定的对象
使用Map,只能获得相应属性,而不能获得对象的方法。不过幸好有pageContext是真正的对象引用,可是使用它来获得更多的信息。
比如,想要获得request对象的method属性,不能使用
而要使用
5.作用域隐式对象的其他作用
如果有不遵循java命名规则的String名作为属性,例如
那么使用起来就有麻烦,容器会把foo当成某个作用域的属性,而且他有一个person性质,但是容器永远也找不到一个foo属性:
使用作用域对象,就能使用[]操作符,这样就算是不遵循java命名规则的Sting名也能顺利使用:
6.禁用EL
默认情况下EL是开启的,如果希望JSP忽略EL,必须显式地指出。所谓的禁用,只是将EL表达式以文本的方式输出:
禁用后:
page指令优先于DD设置。
在页面中也可以禁用个别表达式,只需要在不需要解析的EL表达式的“$”符号前加入一个反斜杠就行,如"\\$"。
以上是关于JSP中的EL的主要内容,如果未能解决你的问题,请参考以下文章