zoukankan      html  css  js  c++  java
  • Structs2-OGNL

    Action中可以通过OGNL访问Action里面的元素的属性。
    (1)访问值栈中对象的普通方法:<s:property value="password.length()"/>
    (2)访问值栈中对象的普通方法:<s:property value="cat.miaomiao()" />
    (3)访问值栈中的Action的普通属性<s:property value="username"/>
    (4)访问值栈中对象的普通属性<s:property value="user.age" />
    (5)访问值栈中对象的普通属性<s:property value="cat.friend.name" />
    (6)访问值栈中Action的普通方法<s:property value="m()" />
    <!--要想访问静态方法,必须在struts.xml文件中加入如下配置才可以 -->
    <constant name="struts.ognl.allowStaticMethodAccess"value="true"/>
    (7)访问静态方法<s:property value="@com.bjsxt.struts2.ognl.S@s()"/> @类名@方法名
    (8)访问静态属性:<s:property value="@com.bjsxt.struts2.ognl.S@STR"/>@类名@属性名
    (9)访问Math类的静态方法:<s:property value="@@max(2,3)" />(不常用)
    (10)访问普通类的构造方法:<s:property value="new com.bjsxt.struts2.ognl.User()"
    这里可以new一个Userd对象,返回User对象
    访问集合
    (11)访问List:<s:property value="users"/>
    (12)访问List中某个元素:<s:property value="users[1]"/>
    <!-- 把users中的每一个元素User取出来,然后取他们的age属性连接成的字符串-->
    (13)访问List中元素某个属性的集合:<s:property value="users.{age}"/> ##user.{age}
    (14)访问List中元素某个属性的集合中的特定值:<s:property value="users.{age}[0]"/> | <s:property value="users[0].age"/>

    (15)访问Set:<s:property value="dogs"/>
    <!--下面这样访问set中的某个元素是访问不到的,因为set是没有顺序的 dog[1] -->
    (16)访问Set中某个元素:<s:property value="dogs[1]"/>
    (17)访问Map:<s:property value="dogMap"/>
    (18)访问Map中某个元素:<s:property value="dogMap.dog101"/> | <s:property value="dogMap['dog101']"/> | <s:property value="dogMap["dog101"]"/>
    <直接访问,这里dog101可以用转义字符串,第二种可以用单引号>
    (19)访问Map中所有的key:<s:property value="dogMap.keys"/>
    (20)访问Map中所有的value:<s:property value="dogMap.values"/>
    <!--在ognl中他会把size方法看成属性,所以可以不加括号,直接访问 -->
    过滤掉集合中的一些元素,
    (21)访问容器的大小:<s:property value="dogMap.size()"/> | <s:property value="users.size"/>
    !-- ?#指的是过滤:取出users中的每个age==1的元素 [0]是取第一个,不加 会全部取出来
    (22)投影(过滤):<s:property value="users.{?#this.age==1}[0]"/>
    <!-- ^#:开头 取出满足条件的开头的那一个 -->
    (23)投影:<s:property value="users.{^#this.age>1}.{age}"/>
    <!-- $#:开头 取出满足条件的结尾的那一个 -->
    (24)投影:<s:property value="users.{$#this.age>1}.{age}"/>
    <!-- 判断 -->
    (25)投影:<s:property value="users.{$#this.age>1}.{age} == null"/>
    (24)投影:<s:property value="users.{$#this.age>1}.{age}"/>
    <!-- value="[1]访问值栈中从上到下的第几个元素,而[0]指的是值栈中从0开始到结尾的所有的对象,得到的是一个集合" [0].username:访问值栈中所有元素的username属性,
    如果没有此属性会依次往下找其他的Action(从一个action跳转到另一个action的时候 值栈中会有两个action) -->
    当result类型是chain时候,在服务器端跳转,那么就会出现了。
    (25)[]:<s:property value="[0].username"/>

  • 相关阅读:
    VS 2013 中如何自定义快捷键(图解)
    c# XML读取
    Java与.NET的WebServices相互调用
    .NET 的 WCF 和 WebService 有什么区别?(转载)
    2017年第六届数学中国数学建模国际赛(小美赛)比赛心得
    网络分析法(Analytic Network Process,ANP)
    图的简单应用(C/C++实现)
    【Android开发学习笔记之一】5大布局方式详解
    Android布局属性详解
    Android应用程序使用两个LinearLayout编排5个Button控件
  • 原文地址:https://www.cnblogs.com/championlai/p/3842390.html
Copyright © 2011-2022 走看看