0%

4.1.2 []和.运算符

4.1.2 []和.运算符

EL表达式可以返回任意类型的值。如果EL表达式的结果是一个带有属性的对象,则可以利用[ ]或者.运算符来访问对象的属性。“[ ]”和“.”运算符类似;“[ ]”是比较规范的形式,“.”运算符则比较快捷。

EL表达式如何访问对象的属性

为了访问对象的属性,可以使用以下任意一种形式:

1
2
${object["propertyName"]}
${object.propertyName}

但是,如果propertyName不是有效的Java变量名,只能使用[ ]运算符。例如,下面这两个EL表达式就可以用来访问隐式对象标题中的HTTP标题host

1
2
${header["host"]}
${header.host}

但是,要想访问accept-language标题,则只能使用“[ ]”运算符,因为accept-language不是一个合法的Java变量名。如果用“.”运算符访问它,将会导致异常。

当表达式中对象的属性也是对象的情况 EL链式访问

对象的属性也是对象的情况,如何访问属性对象中的属性,要想访问属性对象的属性,这个时候就需要嵌套使用运算符了。
例如,隐式对象pageContext是表示当前JSPPageContext对象。它有request属性,表示HttpServletRequest类的对象。而HttpServletRequest又带有servletPath属性。下列几个表达式的结果相同,均能得出pageContext对象的中HttpServletRequest对象中的servletPath属性值:

1
2
3
4
${pageContext["request"]["servletPath"]}
${pageContext.request["servletPath"]}
${pageContext.request.servletPath}
${pageContext["request"].servletPath}

要访问HttpSession,可以使用以下语法:

1
${pageContext.session}

例如,以下表达式会得出session标识符:

1
${pageContext.session.id}

原文链接: 4.1.2 []和.运算符