上面值表达式的例子中EL表达式的基都是托管Bean、数组、List元素或者Map条目,其实除了这些用户创建的应用程序对象外,由容器自动管理的隐式对象也可以被值表达式访问。通过EL可以使用的隐式对象如下表:
表 14.2. 通过EL可以使用的隐式对象
| 隐式对象 | 类型 | 说明 | 举例 |
| applicationScope | Map | 应用作用域变量的Map,以名称作为关键字 | #{applicationScope.myVariable} |
| cookie | Map | 一个当前请求的cookie值的Map,以cookie名称作为关键字 | #{cookie.myCookieVariable} |
| facesContext | FacesContext | 当前请求的FacesContext实例 | #{facesContext} |
| header | Map | 当前请求的HTTP首部值的 Map,以header名称作为关键字。如果给定的header 名称有多个值,仅返回第1个值 | #{header['User-Agent']} |
| headerValues | Map | 当前请求的HTTP首部值的 Map,以header名称作为关键字。对每个关键字,返回一个String数组 | #{headerValues['Accept-Encoding'][3]} |
| initParam | Map | 应用初始化参数的Map,以参数名称为关键字(也称为servlet上下文初始化参数,在部署描述符中设置) | #{initParam.adminEmail} |
| param | Map | 请求参数的Map,以header名称作为关键字。如果对给定的参数名称有多个值,仅返回第1个值 | #{param.address} |
| paramValues | Map | 请求参数的Map,以header名称作为关键字。对每个关键字,返回一个String数组 | #{param.address[2]} |
| requestScope | Map | 请求范围内的变量的Map,以名称作为关键字 | #{requestScope.userPreferences} |
| sessionScope | Map | 会话范围内的变量的Map,以名称作为关键字 | #{sessionScope['user']} |
| view | UIViewRoot | 当前视图 | #{view.locale}、#{view.renderKitId} |