一、前言
最近在写一个小东西,发现好多问题都出在JSF上,故决定趁着暑假好好研究一下JSF,尽管已经学JSF快一年了,现在还要回头来学习JSF,有点打脸的感觉,且不顾这些了,好好学。
二、EL表达式
2.1 EL是什么
EL:Expression Language,为了更简单的获取或者更新(给后台bean赋值)后台bean的属性,而不必在再用复杂的Java来做这些工作而创造的EL表达式。
EL的格式:
#{bean.property}
2.2 EL表达式的其他写法
#{loginBean.username }
#{loginBean['username'] }
#{loginBean[username] }
#{loginBean[#{username}] }
#{UserList[1] }
#{loginBean[user.username] }
#{loginBean['username'].name }
#{loginBean['username'].list[1] }
#{loginBean.username == 'arthinking' }
#{(loginBean.username == 'arthinking')?'相等':'不相等' }
2.3 EL的作用
为了更简单的获取或者更新(给后台bean赋值)后台bean的属性,而不必在再用复杂的Java来做这些工作而创造的EL表达式。
2.4 EL的作用机制
未知,待解决。
2.5 EL作用域
EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。
如下表:
属性范围(jstl名称) | EL中的名称 |
Page | PageScope |
Request | RequestScope |
Session | SessionScope |
Application | ApplicationScope |
我们也可以指定要取出哪一个范围的变量:
范例 | 说明 |
${pageScope.username} | 取出Page范围的username变量 |
${requestScope.username} | 取出Request范围的username变量 |
${sessionScope.username} | 取出Session范围的username变量 |
${applicationScope.username} | 取出Application范围的username变量 |
其中,pageScope、requestScope、sessionScope和applicationScope都是EL 的隐含对象,由它们的名称可以很容易猜出它们所代表的意思,例如:${sessionScope.username}是取出Session范围的username 变量。
2.6 EL隐含对象
EL有九个隐含对象。
如下表:
隐含对象 | 类型 | 说明 |
PageContext | javax.servlet.ServletContext | 表示此JSP的PageContext |
PageScope | java.util.Map | 取得Page范围的属性名称所对应的值 |
RequestScope | java.util.Map | 取得Request范围的属性名称所对应的值 |
sessionScope | java.util.Map | 取得Session范围的属性名称所对应的值 |
applicationScope | java.util.Map | 取得Application范围的属性名称所对应的值 |
param | java.util.Map | 如同ServletRequest.getParameter(String name)。回传String类型的值 |
paramValues | java.util.Map | 如同ServletRequest.getParameterValues(String name)。回传String[]类型的值 |
header | java.util.Map | 如同ServletRequest.getHeader(String name)。回传String类型的值 |
headerValues | java.util.Map | 如同ServletRequest.getHeaders(String name)。回传String[]类型的值 |
cookie | java.util.Map | 如同HttpServletRequest.getCookies() |
initParam | java.util.Map | 如同ServletContext.getInitParameter(String name)。回传String类型的值 |
三、前台显示BackBean的属性
EL表达式
参数请求的生命周期
facesContext