JSF表達式(EL)

 

JSF表達式語言

JSF的表達式語言(EL)的形式跟jSP的表達式語言的形式類似:#{...}。EL的主要用途是使你可以引用和更新bean的屬性,或者執行簡單的語句,而不用寫完整的Java代碼。
l JSF EL基於JSP 2.0中的表達式語言,它的用法幾乎跟JSP2.0中的表達式語言一樣,但二者仍有一些關鍵不同:
l JSF使用(#)來標記表達式的開始,而JSP使用($);
l JSF表達式是雙向的。即它可以引用屬性的值也可以更新之
l JSF EL也允許引用對象方法;
l 某些JSP特定的特徵無效,比如頁面上下文範圍(page);
l JSF EL表達式可以通過常規Java代碼求解(結果是可以不需要JSP);
l JSF EL不官方支持函數。
JSF EL也支持“.”和“[]”取值。它支持全範圍的算術運算、邏輯運算與關係運算:
1.      算術運算有:
加法 (+), 減法 (-), 乘法 (*), 除法 (/ 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。
2. 邏輯運算:
and(或&&)、or(或!!)、not(或!)。一些例子爲:
表達式
結果
#{true and false}
false
#{true or false}
true
#{not true}
false
3. 關係運算:
小於Less-than(<、lt)、大於Greater-than (>、gt)、小於或等於Less-than-or-equal(<=、le)、大於或等於Greater-than-or-equal(>=、ge)、等於Equal(==、eq)、不等於Not Equal(!=、ne),由英文名稱可以得到lt、gt等運算子之縮寫詞,以下是一些例子:
表達式
結果
#{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
4. Empty:
用來測試空值(null、空字符串、數組、Map或者沒有值的Collection),如:
表達式
結果
#{empty ''}
true
#{empty 'abcd'}
false
JSF EL能搜索Java Web應用的三個範圍:application、session、request中以匹配特定關鍵字的對象。因爲JSF一定要鎖定到JSP,所以它不支持page範圍。JSF EL支持的隱含變量有:cookie、header、headerValues、initParam、param、paramValues、applicationScope、sessionScope、requestScope、還有facesContext(當前請求的FacesContext實例)和view(當前視圖)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章