From Gossip@caterpillar

JSP/Servlet: EL 運算子

 

 


使用EL,您可以直接實行一些算術運算、邏輯運算與關係運算,其使用就如同在一般常見的程式語言中之運算,您也可 以在安裝好Tomcat之後,連接上http://localhost:8080/jsp-examples/找到一些EL運算的例子。

算術運算子有:加法 (+), 減法 (-), 乘法 (*), 除法 (/ or div) 與餘除 (% or mod) 。下面是Tomcat中算術運算的一些例子:

運算式 結果
${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運算子對應,如果有疑慮的話,也可以使用括號()來自行決定先後順序。

另外, . 與 [] 被用來作為存取EL中變數所參考之物件屬性,在某些程度上,. 與 [] 是可以交換替代使用的,例如 ${ user.name }也可以寫為 ${ user['name'] },然而建議將[]用於取得像Map之類的物件屬性,例如如果有一個Map物件可以用user.get("name")這樣的方法來取得值,則可以在EL 中使用[]來進行存取,另外陣列值也可以使用[]來指定索引取得指定的元素值。