OGNL表达式的使用方法 .

OGNL表达式的使用方法

 

定义:

OGNL是对象图导航语言(即该表达式访问的是对象及对象的属性)

 

知识点:

1.基本属性的访问

1.1 访问值栈中action的普通属性

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="username"/>  
  

 

1.2 访问值栈中对象的普通属性

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="student.age"/>  

 

1.3 访问值栈中对象(对象包含对象)的普通属性

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="cat.friend.name"/>  

 

1.4 访问值栈中对象的普通方法

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="cat.friend.say().length()"/>  

 

1.5 访问值栈中action的普通方法

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="execute()"/>  

 

1.6 访问静态方法

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="@com.wj.struts2.util.OGNLUtil@getString()"/>  

 

1.7 访问静态属性

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="@com.wj.struts2.util.OGNLUtil@URL"/>  

 

1.8 访问Math类的属性

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="@@max(5,3)"/>  

 

1.9 访问普通类的构造方法

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="new com.wj.struts2.action.model.Dog()"/>  

 

2.访问容器

2.1 访问List

2.1.1 访问list

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list"/>  

 

2.1.2 访问list中的某个元素

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list[2]"/>  

 

2.1.3 访问list中某个元素属性的集合

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list.{no}"/>  

 

2.1.4 访问list中某个元素的属性

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list[2].no"/>  

 

2.2 访问Set

2.2.1 访问set

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="set"/>  

 

2.2.2 访问set中的某个元素(不可访问,set无顺序)

2.3 访问Map

2.3.1 访问Map

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="map"/>  

 

2.3.2 访问Map中的某个元素

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="map['key']"/>  

 

2.3.3 访问Map中的所有key

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="map.keys"/>  

 

2.3.4 访问Map中的所有value

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="map.values"/>  

 

2.3.5 访问容器的大小

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="map.size()"/>  

 

3.投影

3.1 通过投影访问list中年龄为25的学生的姓名

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list.{?#this.age==25}[0].{no}[0]"/>  

 

3.2 通过投影访问list中年龄大于25的集合中的首元素的姓名

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list.{^#this.age>20}.{no}"/>  

 

3.3 通过投影访问list中年龄大于25的集合中的尾元素的姓名

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list.{$#this.age>20}.{no}"/>  

 

3.4 通过投影判断list中年龄大于25的集合是否为空

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="list.{?#this.age>25}==null"/>  

 

4.栈

用[]来访问栈中的元素,注意:[0]表示从栈中的开始位置进行遍历其中的元素

 

[xhtml:nogutter] view plaincopy
 
  1. <s:property value="[1][0].execute()"/>  

 

 

示例代码

OGNLAction.java

 

[java:nogutter] view plaincopy
 
  1. /** 
  2.  * OGNL表达式 
  3.  * @author 健 
  4.  */  
  5. public class OGNLAction extends ActionSupport{  
  6.     /** 
  7.      * 序列化 
  8.      */  
  9.     private static final long serialVersionUID = 1L;  
  10.     /** 
  11.      * 猫 
  12.      */  
  13.     private Cat cat;  
  14.     /** 
  15.      * List 
  16.      */  
  17.     private List <Student>list;  
  18.     /** 
  19.      * Map 
  20.      */  
  21.     private Map <String,Dog>map;  
  22.     /** 
  23.      * 密码 
  24.      */  
  25.     private String password;  
  26.     /** 
  27.      * Set 
  28.      */  
  29.     private Set <Dog>set;  
  30.     /** 
  31.      * 学生 
  32.      */  
  33.     private Student student;  
  34.     /** 
  35.      * 用户名 
  36.      */  
  37.     private String username;  
  38.     public OGNLAction(){  
  39.         this.list = new ArrayList<Student>();  
  40.         Student student1 = new Student("zhangsan",20);  
  41.         Student student2 = new Student("lisi",25);  
  42.         Student student3 = new Student("wangwu",28);  
  43.         Student student4 = new Student("zhaoliu",24);  
  44.         Student student5 = new Student("xiaotaoqi",18);  
  45.         list.add(student1);  
  46.         list.add(student2);  
  47.         list.add(student3);  
  48.         list.add(student4);  
  49.         list.add(student5);  
  50.         this.set = new HashSet<Dog>();  
  51.         Dog dog1 = new Dog("bandeng");  
  52.         Dog dog2 = new Dog("zhuozi");  
  53.         Dog dog3 = new Dog("yizi");  
  54.         set.add(dog1);  
  55.         set.add(dog2);  
  56.         set.add(dog3);  
  57.         this.map = new HashMap<String, Dog>();  
  58.         map.put("0001", dog1);  
  59.         map.put("0002", dog2);  
  60.         map.put("0003", dog3);  
  61.     }  
  62.       
  63.     /** 
  64.      * 控制器 
  65.      * @return 跳转的页面 
  66.      */  
  67.     @Override  
  68.     public String execute(){  
  69.         return "success";  
  70.     }  
  71.     /** 
  72.      * 取得cat 
  73.      * @return cat 
  74.      */  
  75.     public Cat getCat() {  
  76.         return cat;  
  77.     }  
  78.     /** 
  79.      * 取得list 
  80.      * @return list 
  81.      */  
  82.     public List<Student> getList() {  
  83.         return list;  
  84.     }  
  85.     /** 
  86.      * 取得map 
  87.      * @return map 
  88.      */  
  89.     public Map<String, Dog> getMap() {  
  90.         return map;  
  91.     }  
  92.     /** 
  93.      * 取得password 
  94.      * @return password 
  95.      */  
  96.     public String getPassword() {  
  97.         return password;  
  98.     }  
  99.     /** 
  100.      * 取得set 
  101.      * @return set 
  102.      */  
  103.     public Set<Dog> getSet() {  
  104.         return set;  
  105.     }  
  106.     /** 
  107.      * 取得student 
  108.      * @return student 
  109.      */  
  110.     public Student getStudent() {  
  111.         return student;  
  112.     }  
  113.     /** 
  114.      * 取得username 
  115.      * @return username 
  116.      */  
  117.     public String getUsername() {  
  118.         return username;  
  119.     }  
  120.     /** 
  121.      * 设置cat 
  122.      * @param cat cat 
  123.      */  
  124.     public void setCat(Cat cat) {  
  125.         this.cat = cat;  
  126.     }  
  127.     /** 
  128.      * 设置list 
  129.      * @param list list 
  130.      */  
  131.     public void setList(List<Student> list) {  
  132.         this.list = list;  
  133.     }  
  134.     /** 
  135.      * 设置map 
  136.      * @param map map 
  137.      */  
  138.     public void setMap(Map<String, Dog> map) {  
  139.         this.map = map;  
  140.     }  
  141.     /** 
  142.      * 设置password 
  143.      * @param password password 
  144.      */  
  145.     public void setPassword(String password) {  
  146.         this.password = password;  
  147.     }  
  148.     /** 
  149.      * 设置set 
  150.      * @param set set 
  151.      */  
  152.     public void setSet(Set<Dog> set) {  
  153.         this.set = set;  
  154.     }  
  155.     /** 
  156.      * 设置student 
  157.      * @param student student 
  158.      */  
  159.     public void setStudent(Student student) {  
  160.         this.student = student;  
  161.     }  
  162.     /** 
  163.      * 设置username 
  164.      * @param username username 
  165.      */  
  166.     public void setUsername(String username) {  
  167.         this.username = username;  
  168.     }  
  169. }  

 

ChainAction.java

 

[java:nogutter] view plaincopy
 
  1. /** 
  2.  * OGNL表达式 
  3.  * @author 健 
  4.  */  
  5. public class ChainAction extends ActionSupport{  
  6.     /** 
  7.      * 序列化 
  8.      */  
  9.     private static final long serialVersionUID = 1L;  
  10.       
  11.     /** 
  12.      * 控制器 
  13.      * @return 跳转的页面 
  14.      */  
  15.     @Override  
  16.     public String execute(){  
  17.         return "success";  
  18.     }  
  19. }  

 

OGNLUtil.java

 

[java:nogutter] view plaincopy
 
  1. /** 
  2.  * 工具类 
  3.  * @author 健 
  4.  */  
  5. public class OGNLUtil {  
  6.     /** 
  7.      * 静态常量 
  8.      */  
  9.     public static final String URL = "static property";  
  10.     /** 
  11.      * 静态方法 
  12.      * @return 字符串 
  13.      */  
  14.     public static String getString(){  
  15.         return "static method";  
  16.     }  
  17. }  

 

Cat.java

 

[java:nogutter] view plaincopy
 
  1. /** 
  2.  * 猫 
  3.  * @author 健 
  4.  */  
  5. public class Cat {  
  6.     /** 
  7.      * 名字 
  8.      */  
  9.     private String name;  
  10.     /** 
  11.      * 朋友 
  12.      */  
  13.     private Dog friend;  
  14.     /** 
  15.      * 取得name 
  16.      * @return name 
  17.      */  
  18.     public String getName() {  
  19.         return name;  
  20.     }  
  21.     /** 
  22.      * 设置name 
  23.      * @param name name 
  24.      */  
  25.     public void setName(String name) {  
  26.         this.name = name;  
  27.     }  
  28.     /** 
  29.      * 取得friend 
  30.      * @return friend 
  31.      */  
  32.     public Dog getFriend() {  
  33.         return friend;  
  34.     }  
  35.     /** 
  36.      * 设置friend 
  37.      * @param friend friend 
  38.      */  
  39.     public void setFriend(Dog friend) {  
  40.         this.friend = friend;  
  41.     }  
  42.     /** 
  43.      * 类方法 
  44.      * @return 返回字符串 
  45.      */  
  46.     public String say(){  
  47.         return "miaomiao";  
  48.     }  
  49.     /** 
  50.      * 构造 
  51.      */  
  52.     public Cat(){  
  53.         System.out.println("cat constructor");  
  54.     }  
  55.     /** 
  56.      * 重写toString方法 
  57.      */  
  58.     public String toString(){  
  59.         return "cat name is" + this.name;  
  60.     }  
  61. }  

 

Dog.java

 

[java:nogutter] view plaincopy
 
  1. /** 
  2.  * 狗 
  3.  * @author 健 
  4.  */  
  5. public class Dog {  
  6.     /** 
  7.      * 名字 
  8.      */  
  9.     private String name;  
  10.     /** 
  11.      * 构造 
  12.      */  
  13.     public Dog(){  
  14.         System.out.println("dog constructor");  
  15.     }  
  16.     /** 
  17.      * 构造 
  18.      */  
  19.     public Dog(String name){  
  20.         this.name = name;  
  21.     }  
  22.     /** 
  23.      * 取得name 
  24.      * @return name 
  25.      */  
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.     /** 
  30.      * 设置name 
  31.      * @param name name 
  32.      */  
  33.     public void setName(String name) {  
  34.         this.name = name;  
  35.     }  
  36.     /** 
  37.      * 类方法 
  38.      * @return 返回字符串 
  39.      */  
  40.     public String say(){  
  41.         return "miaomiao";  
  42.     }  
  43.     /** 
  44.      * 重写toString方法 
  45.      */  
  46.     public String toString(){  
  47.         return "dog name is" + this.name;  
  48.     }  
  49. }  

 

Student.java

 

[java:nogutter] view plaincopy
 
  1. /** 
  2.  * 学生类 
  3.  * @author 健 
  4.  */  
  5. public class Student {  
  6.     /** 
  7.      * 学号 
  8.      */  
  9.     private String no;  
  10.     /** 
  11.      * 年龄 
  12.      */  
  13.     private int age;  
  14.     /** 
  15.      * 构造方法 
  16.      */  
  17.     public Student(){  
  18.         System.out.println("进入学生类的构造方法");  
  19.     }  
  20.     /** 
  21.      * 构造方法 
  22.      */  
  23.     public Student(String no,int age){  
  24.         this.age = age;  
  25.         this.no = no;  
  26.     }  
  27.     /** 
  28.      * 取得no 
  29.      * @return no 
  30.      */  
  31.     public String getNo() {  
  32.         return no;  
  33.     }  
  34.     /** 
  35.      * 设置no 
  36.      * @param no no 
  37.      */  
  38.     public void setNo(String no) {  
  39.         this.no = no;  
  40.     }  
  41.     /** 
  42.      * 取得age 
  43.      * @return age 
  44.      */  
  45.     public int getAge() {  
  46.         return age;  
  47.     }  
  48.     /** 
  49.      * 设置age 
  50.      * @param age age 
  51.      */  
  52.     public void setAge(int age) {  
  53.         this.age = age;  
  54.     }  
  55.     /** 
  56.      * 重写toString方法 
  57.      */  
  58.     public String toString(){  
  59.         return "Student : " + this.no + " , " + this.age;  
  60.     }  
  61. }  

 

struts.xml

 

[xhtml:nogutter] view plaincopy
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7.     <!-- 配置开发模式:修改不用重启服务器 -->  
  8.     <constant name="struts.devMode" value="true"/>  
  9.     <!-- 配置允许静态方法的访问 -->  
  10.     <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>  
  11.     <!-- 包含的文件 -->  
  12.     <include file="ognl.xml"></include>   
  13. </struts>  

 

ognl.xml

 

[xhtml:nogutter] view plaincopy
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7.     <package name="ognl" namespace="/ognl" extends="struts-default">  
  8.         <action name="ognl" class="com.wj.struts2.action.OGNLAction" >  
  9.             <result name="success">/result.jsp</result>  
  10.         </action>  
  11.         <action name="chain" class="com.wj.struts2.action.ChainAction">  
  12.             <result type="chain" >  
  13.                 <param name="actionName">ognl</param>  
  14.                 <param name="namespace">/ognl</param>  
  15.             </result>  
  16.         </action>  
  17.     </package>  
  18. </struts>  

 

index.jsp

 

[xhtml:nogutter] view plaincopy
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="/struts-tags" prefix="s" %>  
  3. <%  
  4.     String path = request.getContextPath();  
  5.     String basePath = request.getScheme() + "://"  
  6.             + request.getServerName() + ":" + request.getServerPort()  
  7.             + path + "/";  
  8. %>  
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11.     <head>  
  12.         <base href="<%=basePath%>">  
  13.   
  14.         <title>Struts2_OGNL</title>  
  15.         <meta http-equiv="pragma" content="no-cache">  
  16.         <meta http-equiv="cache-control" content="no-cache">  
  17.         <meta http-equiv="expires" content="0">  
  18.         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19.         <meta http-equiv="description" content="This is my page">  
  20.         <!-- 
  21.         <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
  22.         -->  
  23.     </head>  
  24.   
  25.     <body>  
  26.         <div>  
  27.             访问基本元素  
  28.             <li><a href="ognl/ognl?username=wangjian&password=123456" mce_href="ognl/ognl?username=wangjian&password=123456">1.访问值栈中action的普通属性</a></li>  
  29.             <li><a href="ognl/ognl?student.age=20&student.no=0001" mce_href="ognl/ognl?student.age=20&student.no=0001">2.访问值栈中对象的普通属性</a></li>  
  30.             <li><a href="ognl/ognl?cat.friend.name=oudy" mce_href="ognl/ognl?cat.friend.name=oudy">3.访问值栈中对象(对象包含对象)的普通属性</a></li>  
  31.             <li><a href="ognl/ognl?cat.friend.name=oudy" mce_href="ognl/ognl?cat.friend.name=oudy">4.访问值栈中对象的普通方法</a></li>  
  32.             <li><a href="ognl/ognl" mce_href="ognl/ognl">5.访问值栈中action的普通方法</a></li>  
  33.             <li><a href="ognl/ognl" mce_href="ognl/ognl">6.访问静态方法</a></li>  
  34.             <li><a href="ognl/ognl" mce_href="ognl/ognl">7.访问静态属性</a></li>  
  35.             <li><a href="ognl/ognl" mce_href="ognl/ognl">8.访问Math类的属性</a></li>  
  36.             <li><a href="ognl/ognl" mce_href="ognl/ognl">9.访问普通类的构造方法</a></li>  
  37.         </div>  
  38.           
  39.         <br>  
  40.         <br>  
  41.         <div>  
  42.             访问容器<br>  
  43.             (一)访问List<br>  
  44.             <li><a href="ognl/ognl" mce_href="ognl/ognl">1.访问list</a></li>  
  45.             <li><a href="ognl/ognl" mce_href="ognl/ognl">2.访问list中的某个元素</a></li>  
  46.             <li><a href="ognl/ognl" mce_href="ognl/ognl">3.访问list中某个元素属性的集合</a></li>  
  47.             <li><a href="ognl/ognl" mce_href="ognl/ognl">4.访问list中某个元素的属性</a></li><br>  
  48.             (二)访问Set<br>  
  49.             <li><a href="ognl/ognl" mce_href="ognl/ognl">1.访问set</a></li>  
  50.             <li><a href="ognl/ognl" mce_href="ognl/ognl">2.访问set中的某个元素(不可访问,set无顺序)</a></li><br>  
  51.             (三)访问Map<br>  
  52.             <li><a href="ognl/ognl" mce_href="ognl/ognl">1.访问Map</a></li>  
  53.             <li><a href="ognl/ognl" mce_href="ognl/ognl">2.访问Map中的某个元素</a></li>  
  54.             <li><a href="ognl/ognl" mce_href="ognl/ognl">3.访问Map中的所有key</a></li>  
  55.             <li><a href="ognl/ognl" mce_href="ognl/ognl">4.访问Map中的所有value</a></li>  
  56.             <li><a href="ognl/ognl" mce_href="ognl/ognl">5.访问容器的大小</a></li>  
  57.             <br>  
  58.         </div>  
  59.         <br>  
  60.         <br>  
  61.         <div>  
  62.             投影<br>  
  63.             <li><a href="ognl/ognl" mce_href="ognl/ognl">1.通过投影访问list中年龄为25的学生的姓名</a></li>  
  64.             <li><a href="ognl/ognl" mce_href="ognl/ognl">2.通过投影访问list中年龄大于25的集合中的首元素的姓名</a></li>  
  65.             <li><a href="ognl/ognl" mce_href="ognl/ognl">3.通过投影访问list中年龄大于25的集合中的尾元素的姓名</a></li>  
  66.             <li><a href="ognl/ognl" mce_href="ognl/ognl">4.通过投影判断list中年龄大于25的集合是否为空</a></li><br>  
  67.         </div>  
  68.         <br>  
  69.         <br>  
  70.         <div>  
  71.             栈<br>  
  72.             <li><a href="ognl/chain" mce_href="ognl/chain">用[]来访问栈中的元素,注意:[1]表示从栈中的开始位置进行遍历其中的元素</a></li>  
  73.         </div>  
  74.     </body>  
  75. </html>  

 

result.jsp

 

[xhtml:nogutter] view plaincopy
 
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@taglib uri="/struts-tags" prefix="s" %>  
  3. <%  
  4.     String path = request.getContextPath();  
  5.     String basePath = request.getScheme() + "://"  
  6.             + request.getServerName() + ":" + request.getServerPort()  
  7.             + path + "/";  
  8. %>  
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11.     <head>  
  12.         <base href="<%=basePath%>">  
  13.   
  14.         <title>Struts2_OGNL</title>  
  15.         <meta http-equiv="pragma" content="no-cache">  
  16.         <meta http-equiv="cache-control" content="no-cache">  
  17.         <meta http-equiv="expires" content="0">  
  18.         <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19.         <meta http-equiv="description" content="This is my page">  
  20.         <!-- 
  21.         <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> 
  22.         -->  
  23.     </head>  
  24.   
  25.     <body>  
  26.         访问值栈中action的普通属性:<br>  
  27.         <li>username:<s:property value="username"/></li>  
  28.         <li>password:<s:property value="password"/></li>  
  29.         <br>  
  30.         ----------------------------------------  
  31.         <br>  
  32.         访问值栈中对象的普通属性<br>  
  33.         <li>student:<s:property value="student"/></li>  
  34.         <li>no:<s:property value="student.no"/></li>  
  35.         <li>age:<s:property value="student.age"/></li>  
  36.         <br>  
  37.         ----------------------------------------  
  38.         <br>  
  39.         访问值栈中对象(对象包含对象)的普通属性<br>  
  40.         <li>friendName:<s:property value="cat.friend.name"/></li>  
  41.         <br>  
  42.         ----------------------------------------  
  43.         <br>  
  44.         访问值栈中对象的普通方法<br>  
  45.         <li>method01:<s:property value="cat.friend.say().length()"/></li>  
  46.         <li>method02:<s:property value="cat.say()"/></li>  
  47.         <br>  
  48.         ----------------------------------------  
  49.         <br>  
  50.         访问值栈中action的普通方法<br>  
  51.         <li>method:<s:property value="execute()"/></li>  
  52.         <br>  
  53.         ----------------------------------------  
  54.         <br>  
  55.         访问静态方法<br>  
  56.         <li>static method:<s:property value="@com.wj.struts2.util.OGNLUtil@getString()"/></li>  
  57.         <br>  
  58.         ----------------------------------------  
  59.         <br>  
  60.         访问静态属性<br>  
  61.         <li>static property:<s:property value="@com.wj.struts2.util.OGNLUtil@URL"/></li>  
  62.         <br>  
  63.         ----------------------------------------  
  64.         <br>  
  65.         访问静态属性<br>  
  66.         <li>Math method:<s:property value="@@max(5,3)"/></li>  
  67.         <br>  
  68.         ----------------------------------------  
  69.         <br>  
  70.         访问普通类的构造方法<br>  
  71.         <li>Constructer method:<s:property value="new com.wj.struts2.action.model.Dog()"/></li>  
  72.         <br>  
  73.         ----------------------------------------  
  74.         <br>  
  75.         <br>  
  76.         <br>  
  77.         访问容器<br>  
  78.         (一)访问List<br>  
  79.         <li>1.访问list----<s:property value="list"/></li>  
  80.         <li>2.访问list中的某个元素----<s:property value="list[2]"/></li>  
  81.         <li>3.访问list中某个元素属性的集合----<s:property value="list.{no}"/></li>  
  82.         <li>4.访问list中某个元素的属性----<s:property value="list[2].no"/></li><br>  
  83.         (二)访问Set<br>  
  84.         <li>1.访问set----<s:property value="set"/></li>  
  85.         <li>2.访问set中的某个元素(不可访问,set无顺序)----<s:property value="set[1]"/></li><br>  
  86.         (三)访问Map<br>  
  87.         <li>1.访问Map----<s:property value="map"/></li>  
  88.         <li>2.访问Map中的某个元素----<s:property value="map['0001']"/></li>  
  89.         <li>3.访问Map中的所有key----<s:property value="map.keys"/></li>  
  90.         <li>4.访问Map中的所有value----<s:property value="map.values"/></li>  
  91.         <li>5.访问容器的大小----<s:property value="map.size()"/></li>  
  92.         <br>  
  93.         ----------------------------------------  
  94.         <br>   
  95.         <br>   
  96.         <br>  
  97.         <div>  
  98.             投影<br>  
  99.             <li>1.通过投影访问list中年龄为25的学生的姓名----<s:property value="list.{?#this.age==25}[0].{no}[0]"/></li>  
  100.             <li>2.通过投影访问list中年龄大于25的集合中的首元素的姓名----<s:property value="list.{^#this.age>20}.{no}"/></li>  
  101.             <li>3.通过投影访问list中年龄大于25的集合中的尾元素的姓名----<s:property value="list.{$#this.age>20}.{no}"/></li>  
  102.             <li>4.通过投影判断list中年龄大于25的集合是否为空----<s:property value="list.{?#this.age>25}==null"/></li><br>  
  103.         </div>  
  104.         ----------------------------------------  
  105.         <br>   
  106.         <br>   
  107.         <br>  
  108.         <div>  
  109.             栈<br>  
  110.             <li>用[]来访问栈中的元素,注意:[0]中0表示从栈中的开始位置进行遍历其中的元素----<s:property value="[1][0].execute()"/></li>  
  111.         </div>  
  112.   
  113.           
  114.         <s:debug></s:debug>  
  115.     </body>  
  116. </html>  
posted @ 2012-07-06 15:04  到是非得失  阅读(565)  评论(0编辑  收藏  举报