OGNL 中的集合操作:
1. 直接生成List类型集合的语法:{e1,e2,e3,e4...}
//直接生成一个List类型集合,该集合包含了3个元素:e1,e2,e3和e4。如果需要多个元素,则多个元素直接用英文逗号隔开;
2. 自己生成Map类型集合的语法:#{key1:value1,key2:value2,...}
//直接生成一个Map类型的集合,该Map对象中每个key-value对象之间以英文冒号隔开。多项之间以英文逗号隔开;
3. OGNL提供了两个元素符:in 和 not in ,其中in判断某个元素是否在指定集合中;not in 判断是否不在某个集合中;
<s:if test=" 'name' in {'name','passwoed'} ">
"name"包含在集合里
</s:if>
<s:else>
"name"不在集合里
</s:else>
4. OGNL取得子集时有如下3个操作符:
? :取出所有符合选择逻辑的元素
^ :取出符合选择逻辑的第一个元素
$ :取出所有符合选择逻辑的最后一个元素
例如: person.relatives.{? #this.gender == 'male'}
在上面代码中,直接在集合后面紧跟 .{} 运算符表明用于取出该集合的子集,在{ }内使用?表明取出所有符合选择逻辑的元素,而 #tihs 代表集合里的元素。因此,上面代码的含义是:取出person的所有性别为male的relatives(亲戚)集合;