当前位置:编程学习 > JS >>

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,