Object Graphic Navigation Language 对象图导航语言
struts2中OGNL需要配合struts标签或EL表达式(EL只能访问ValueStack中的对象)才可以使用
访问上下文对象: #request、#session等, 对于根对象(ValueStack)不需要加#访问
使用struts标签创建集合对象:
<s:set var="mylist" value="{元素一,元素二,元素n}" />
使用struts标签创建map对象
<s:set var="mymap" value="#{key1:value1,key2:value2,keyn:valuen}" />
使用struts标签遍历ognl对象
<s:iterator value="#mylist"> <s:property /><br></s:iterator>
说明:property标签在没有指明value属性时,默认读取ValueStack栈顶的值
<s:iterator value="#mymap"> <s:property value="key"/> = <s:property value="value"/><br></s:iterator>
判断对象是否存在于集合中,使用in或not in
使用投影功能: mylist:{?#this.属性1 > n} ----> 返回mylist中属性1的值大于n的元素的集合 ?返回满足条件的子集合 ^返回满足条件的第一个元素 $返回满足条件的最后一个元素
1.#符号的用途一般有三种 –访问非根对象属性,例如示例中的#session.msg表达式,#相当于ActionContext.getContext() –用于过滤和投影(projecting)集合,如persons.{?#this.age>30} –用来构造Map,例如:#{0:'男',1:'女'}
2.%符号 %符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值