struts2_part5_OGNL
OGNL object graph navigation language 对象图导航语言
一、访问值栈中的属性,方法
<s:property value="username" />
value 为 username,user.age, user.sayHi,execute()
二、访问静态属性,方法:格式:@包名.类名@属性/方法
1)普通静态属性,方法
注意:在 struts2-core-2.3.15.1.jar ->org.apache.struts2 -> static -> default.properties 中
默认是不允许访问静态方法。
在struts.xml中配置
<!-- 允许OGNL中,调用静态方法 -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />
在JSP中显示
<s:property value="@com.core.OgnlAction@happy()" />
2)访问Math类中的方法:(Math类中的所以方法均为静态方法)
如:<s:property value="@@max(2,5)" /></li>
三、访问集合数据
实例代码:
[html]
<li>访问list: <s:property value="users" /></li> <!-- 会自动调用toString()方法 -->
<li>访问list中某个元素: <s:property value="users[1]" /></li>
<li>访问list中某个元素的集合: <s:property value="users.{age}" /></li>
<li>访问list中某个元素的集合的特定值: <s:property value="users[2].age" /></li>
<li>访问set: <s:property value="str" /></li>
<li>访问set中某个元素: <s:property value="str[0]" />,取不到,因为set是没有顺序的</li>
<li>访问Map: <s:property value="MapUser" /></li>
<li>访问Map中某个元素: <s:property value="MapUser.User1" /></li>
<li>访问Map中所有的keys: <s:property value="MapUser.keys" /></li>
<li>访问Map中所有的values: <s:property value="MapUser.values" /></li>
<li>访问Map中所有的大小: <s:property value="MapUser.size()" /></li>
<hr/>
四、投影(感觉其实就是过滤器的作用,选出符合条件的)
实例代码:
[html]
<li>投影(过滤)</li>
<li>age==8: <s:property value="users.{?#this.age==8}.{age}" /></li>
<li>age>7: <s:property value="users.{?#this.age>7}.{age}" /></li>
<li>取第一个 age>7 : <s:property value="users.{^#this.age>7}.{age}" /></li>
<li>取最后一个 age>7: <s:property value="users.{$#this.age>7}.{age}" /></li>
<hr/>
<li>[]可以直接取valueStack中的值 [0].username=: <s:property value="[0].username" /></li>
<hr/>
总结:OGNL的作用就是为了取出ValueStack中的数据。
补充:Web开发 , Jsp ,