ognl的功能在很大一部分和EL表达式冲突,我的策略是先使用EL表达式,如果不支持就使用ONGL表达式,ONGL主要对集合的支持更多一些
创建List
语法为: {e1,e2,e3}.
<s:select label="label"name="name" list="{'name1','name2','name3'}"value="%{'name2'}" />
上面的代码生成了一个HTML Select对象,可选的内容为: name1,name2,name3,默认值为:name2。
对于 array和list,可使用下标访问,如:
{"name1","name2"}[1]
创建Map
语法为:#{key1:value1,key2:value2}.
<s:select label="label"name="name" list="#{'foo':'foovalue','bar':'barvalue'}" />
上面的代码生成了一个HTML Select对象,foo名字表示的内容为:foovalue,bar名字表示的内容为:barvalue。
对于map 使用key 来访问, 如 map['foo']
判断一个对象是否在List内存在
<s:if test="'foo' in{'foo','bar'}">
muhahaha
</s:if>
<s:else>
boo
</s:else>
<s:if test="'foo' not in{'foo','bar'}">
muhahaha
</s:if>
<s:else>
boo
</s:else>
选择:取得一个List的一部分
? – 所有满足选择逻辑的对象
^ - 第一个满足选择逻辑的对象
$ - 最后一个满足选择逻辑的对象
例如:
person.relatives.{? #this.gender == 'male'}
上述代码取得这个人(person)所有的男性(this.gender==male)的亲戚(relatives)
投影:集合中属性的集合
collection.{XXX} 其中xxx 是每个元素的公共属性