OGNL的集合操作
如果需要一個集合元素的時候(例如List對象或者Map對象),可以使用OGNL中同集合相關的表達式。
可以使用如下代碼直接生成一個List對象:
{e1,e2,e3…} |
該OGNL表達式中,直接生成了一個List對象,該List對象中包含3個元素:e1、e2和e3。如果需要更多的元素,可以按照這樣的格式定義多個元素,多個元素之間使用逗號隔開。
如下代碼可以直接生成一個Map對象:
#{key1:value1,key2:value2,…} |
Map類型的集合對象,使用key-value格式定義,每個key-value元素使用冒號標識,多個元素之間使用逗號隔開。
對于集合類型,OGNL表達式可以使用in和not in兩個元素符號。其中,in表達式用來判斷某個元素是否在指定的集合對象中;not in判斷某個元素是否不在指定的集合對象中,如代碼8.3所示。
代碼8.3使用OGNL集合操作符
|
除了in和not in之外,OGNL還允許使用某個規則獲得集合對象的子集,常用的有以下3個相關操作符。
>>>
?:獲得所有符合邏輯的元素。
>>>
^:獲得符合邏輯的第一個元素。
>>>
$:獲得符合邏輯的最后一個元素。
例如代碼:
person.relatives.{? #this.gender == 'male'} |
該代碼可以獲得person的所有性別為male的relatievs集合。