JSF Expression Language 搭配 JSF 标签来使用,是用来存取数据对象的一个简易语言。 
          
                      
                          JSF EL是以#开始,将变量或表达式放置在 
                      
                      
                        
                          Unknown macro: { 与 }
                        
                      
                       之间,例如: 
          
                      
                         
                      
                      
                      
                          变量名称可以是faces-config.xml中定义的名称,如果是Bean的话,可以透过使用 '.' 运算子来存取它的属性,例如:
                      
                      
                        
                          
                            ...
 <f:view>
    <h:outputText value=
                            
                              "#{userBean.name}"
                            
                            
/>
 </f:view>
 ...
                          
                         
                       
                      
                          在JSF卷标的属性上," 与 " (或'与')之间如果含有EL,则会加以运算,您也可以这么使用它:
                      
                      
                        
                          
                            ...
 <f:view>
    名称, 年龄:<h:outputText
                  value=
                            
                              "#{userBean.name}, #{userBean.age}"
                            
                            
/>
 </f:view>
 ...
                          
                         
                       
                      
                          一个执行的结果可能是这样显示的:
                      
                      
                      
                          EL的变量名也可以程序执行过程中所宣告的名称,或是JSF EL预设的隐含对象,例如下面的程序使用param隐含对象来取得使用者输入的参数:
                      
                      
                        
                          
                            <%@ taglib uri=
                            
                              "http:
                              
                              
 prefix="f" %>
                            
                            
 <%@ taglib uri=
                            
                              "http:
                              
                              
 prefix="h" %>
                            
                            
 <%@page contentType=
                            
                              "text/html; charset=Big5"
                            
                            
%>
 <html>
 <head>
 <title></title>
 </head>
 <body>
 <f:view>
    <b> 您好, <h:outputText value=
                            
                              "#{param.name}"
                            
                            
/> </b>
 </f:view>
 </body>
 </html>
                          
                         
                       
                      
                          param是JSF EL预设的隐含对象变量,它代表request所有参数的集合,实际是一个java.util.Map型态对象,JSF所提供的隐含对象,大致上对应于
                        
                          
                            JSP隐含物件
                            
                          
                        
                         ,不过JSF隐含对象移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于 javax.faces.context.FacesContext与javax.faces.component.UIViewRoot。
                      
                      
                          对于Map型态对象,我们可以使用 '.' 运算子指定key值来取出对应的value,也可以使用 [ 与 ] 来指定,例如:
                      
                      
                        
                          
                            ...
 <f:view>
    <b> 您好, <h:outputText value=
                            
                              "#{param['name']}"
                            
                            
/> </b>
 </f:view>
 ...
                          
                         
                       
                      
                          在 [ 与 ] 之间,也可以放置其它的变量值,例如:
                      
                      
                        
                          
                            ...
 <f:view>
    <h:outputText value=
                            
                              "#{someBean.someMap[user.name]}"
                            
                            
/>
 </f:view>
 ...
                          
                         
                       
                      
                          如果变量是List型态或数组的话,则可以在 [] 中指定索引,例如:
                      
                      
                        
                          
                            ....
 <f:view>
     <h:outputText value=
                            
                              "#{someBean.someList[0]}"
                            
                            
/>
     <h:outputText value=
                            
                              "#{someBean.someArray[1]}"
                            
                            
/>
     <h:outputText
           value=
                            
                              "#{someBean.someListOrArray[user.age]}"
                            
                            
/>
 </f:view>
 ....
                          
                         
                       
                      
                          您也可以指定字面常数,对于true、false、字符串、数字,JSF EL会尝试进行转换,例如:
                      
                      
                        
                          
                            ....
 <h:outputText value=
                            
                              "#{
                              
                                true
                              
                              
}"
                            
                            
/>
 ....
 <h:outputText value=
                            
                              "#{'This is a test'}"
                            
                            
/>
 ....
                          
                         
                       
                      
                          如果要输出字符串,必须以单引号 ' 或双自变量 " 括住,如此才不会被认为是变量名称。
                      
                      
                          在宣告变量名称时,要留意不可与JSF的保留字或关键词同名,例如不可取以下这些名称:
                      
                      
                        
                          
                            
                              true
                            
                            
                              false
                            
                            
                              null
                            
                            
 div mod and or not eq ne lt gt le ge 
                            
                              instanceof
                            
                            
 empty
                          
                         
                       
                      
                          使用EL,您可以直接实行一些算术运算、逻辑运算与关系运算,其使用就如同在一般常见的程序语言中之运算。
                      
                      
                          算术运算子有:加法 (+), 减法 (-), 乘法 (*), 除法 (/ or div) 与余除 (% or mod) 。下面是算术运算的一些例子:
                      
                      
              表达式 结果 
            
                      
                        
                          |
                          
                            | #{1} | 1 | 
                          
                            | #{1 + 2} | 3 | 
                          
                            | #{1.2 + 2.3} | 3.5 | 
                          
                            | #{1.2E4 + 1.4} | 12001.4 | 
                          
                            | #{-4 - 2} | -6 | 
                          
                            | #{21 * 2} | 42 | 
                          
                            | #{3/4} | 0.75 | 
                          
                            | #{3 div 4} | 0.75,除法 | 
                          
                            | #{3/0} | Infinity | 
                          
                            | #{10%4} | 2 | 
                          
                            | #{10 mod 4} | 2,也是余除 | 
                          
                            | #{(1==2) ? 3 : 4} | 4 | 
                        
                      
                      
                          如同在Java语法一样 ( expression ? result1 : result2)是个三元运算,expression为true显示result1,false显示result2。
                      
                      
                          逻辑运算有:and(或&&)、or(或!!)、not(或!)。一些例子为:
                      
                      
              表达式 结果 
            
                      
                        
                          |
                          
                            | #{true and false} | false | 
                          
                            | #{true or false} | true | 
                          
                            | #{not true} | false | 
                        
                      
                      
                          关系运算有:小于Less-than (< or lt)、大于Greater-than (> or gt)、小于或等于Less-than-or-equal (<= or le)、大于或等于Greater-than-or-equal (>= or ge)、等于Equal (== or eq)、不等于Not Equal (!= or ne),由英文名称可以得到lt、gt等运算子之缩写词,以下是Tomcat的一些例子:
                      
                      
              表达式 结果 
            
                      
                        
                          |
                          
                            | #{1 < 2} | true | 
                          
                            | #{1 lt 2} | true | 
                          
                            | #{1 > (4/2)} | false | 
                          
                            | #{1 > (4/2)} | false | 
                          
                            | #{4.0 >= 3} | true | 
                          
                            | #{4.0 ge 3} | true | 
                          
                            | #{4 <= 3} | false | 
                          
                            | #{4 le 3} | false | 
                          
                            | #{100.0 == 100} | true | 
                          
                            | #{100.0 eq 100} | true | 
                          
                            | #{(10*10) != 100} | false | 
                          
                            | #{(10*10) ne 100} | false | 
                        
                      
                      
                          左边是运算子的使用方式,右边的是运算结果,关系运算也可以用来比较字符或字符串,按字典顺序来决定比较结果,例如:
                      
                      
              表达式 结果 
            
                      
                        
                          |
                          
                            | #{'a' < 'b'} | true | 
                          
                            | #{'hip' > 'hit'} | false | 
                          
                            | #{'4' > 3} | true | 
                        
                      
                      
                          EL运算子的执行优先级与Java运算子对应,如果有疑虑的话,也可以使用括号()来自行决定先后顺序。