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"/>

  • 相关阅读:
    jmeter(46) redis
    jmeter(45) tcp/ip协议
    Codeforces Round #538 (Div. 2)D(区间DP,思维)
    Codeforces Global Round 1D(DP,思维)
    Educational Codeforces Round 57D(DP,思维)
    UPC11073(DP,思维)
    Yahoo Progamming Contest 2019D(DP,思维)
    Atcoder Beginner Contest 118D(DP,完全背包,贪心)
    Xuzhou Winter Camp 1C(模拟)
    Educational Codeforces Round 57 (Rated for Div. 2)D(动态规划)
  • 原文地址:https://www.cnblogs.com/championlai/p/3842390.html
Copyright © 2011-2022 走看看