4.1.2 []和.运算符
4.1.2 []和.运算符
EL
表达式可以返回任意类型的值。如果EL
表达式的结果是一个带有属性的对象,则可以利用[ ]
或者.
运算符来访问对象的属性。“[ ]
”和“.
”运算符类似;“[ ]
”是比较规范的形式,“.
”运算符则比较快捷。
EL表达式如何访问对象的属性
为了访问对象的属性,可以使用以下任意一种形式:
1 | ${object["propertyName"]} |
但是,如果propertyName
不是有效的Java变量名,只能使用[ ]
运算符。例如,下面这两个EL
表达式就可以用来访问隐式对象标题中的HTTP
标题host
:
1 | ${header["host"]} |
但是,要想访问accept-language
标题,则只能使用“[ ]
”运算符,因为accept-language
不是一个合法的Java
变量名。如果用“.
”运算符访问它,将会导致异常。
当表达式中对象的属性也是对象的情况 EL链式访问
对象的属性也是对象的情况,如何访问属性对象中的属性,要想访问属性对象的属性,这个时候就需要嵌套使用运算符了。
例如,隐式对象pageContext
是表示当前JSP
的PageContext
对象。它有request
属性,表示HttpServletRequest
类的对象。而HttpServletRequest
又带有servletPath
属性。下列几个表达式的结果相同,均能得出pageContext
对象的中HttpServletRequest
对象中的servletPath
属性值:
1 | ${pageContext["request"]["servletPath"]} |
要访问HttpSession
,可以使用以下语法:
1 | ${pageContext.session} |
例如,以下表达式会得出session
标识符:
1 | ${pageContext.session.id} |