OGNL框架学习(二)

原文:http://yunzhongzi.javaeye.com/blog/143243

1.OGNL可以用索引来访问数组,比如表达式abc[1].name,表示取得id为abc的数组的第1维的对象的name属性,注意,OGNL中的数组索引与Java一样,是从0开始的,下面的代码演示了如何访问数组:

    Map distObject=new HashMap(); 
    User[] users=new User[3]; 
    users[0]=new User(); 
    users[0].setName("user0"); 
    users[1]=new User(); 
    users[1].setName("user1"); 
    users[2]=new User(); 
    users[2].setName("user2"); 
    distObject.put("abc",users); 
   Object result = Ognl.getValue("abc[1].name",distObject);//********(1)  
   System.out.println("***测试数组**********abc[1].name:"+result); 
   //输出:***测试数组**********abc[1].name:user1

 

2.OGNL提供了一些特别的索引符号访问数组中的特殊位置,如符号^表示数组的第1维元素,$表示最后一维,|表示中间的元素。表达式abc[^].name,表示取得id为abc的数组的第1维的对象的name属性。下面的代码演示了这些特殊的符号的用法。

 Map distObject=new HashMap(); 
 User[] users=new User[3]; 
 users[0]=new User(); 
 users[0].setName("user0"); 
 users[1]=new User(); 
 users[1].setName("user1"); 
 users[2]=new User(); 
 users[2].setName("user2"); 
 distObject.put("abc",users); 
 Object result = Ognl.getValue("abc[^].name",distObject); 
 System.out.println("***测试数组**********abc[^].name:"+result); 
 //输出:***测试数组**********abc[^].name:user0 
 result = Ognl.getValue("abc[$].name",distObject); 
 System.out.println("***测试数组**********abc[$].name:"+result); 
       //输出:***测试数组**********abc[$].name:user2 
 result = Ognl.getValue("abc[|].name",distObject); 
 System.out.println("***测试数组**********abc[|].name:"+result); 
       //输出:***测试数组**********abc[|].name:user1

 

3.OGNL把ArrayList也当作数组,下面的代码演示了OGNL如何访问ArrayList。

 Map distObject=new HashMap(); 
 List users=new ArrayList(); 
 User user0=new User(); 
 user0.setName("user0"); 
 users.add(user0); 
 User user1=new User(); 
 user1.setName("user1"); 
 users.add(user1); 
 User user2=new User(); 
 user2.setName("user2"); 
 users.add(user2); 
 distObject.put("abc",users); 
 Object result = Ognl.getValue("abc[1].name",distObject);//********(1) 
 System.out.println("***测试ArrayList**********abc[1].name:"+result); 
 //输出:***测试数组**********abc[1].name:user1 

 

4.Map可以看作下标为字符串的数组。如果id为abc的map,包含key为"user0"的对象,则表达式abc["user0"]可以访问该对象。下面的代码演示了OGNL如何用用字符串下标访问Map。

 Map distObject=new HashMap(); 
 Map uMap=new HashMap(); 
 User user=new User(); 
 user.setName("user0"); 
 uMap.put("user0",user); 
 user=new User(); 
 user.setName("user1"); 
 uMap.put("user1",user); 
 user=new User(); 
 user.setName("user2"); 
 uMap.put("user2",user); 
 distObject.put("abc",uMap); 
 Object result = Ognl.getValue("abc['user2'].name",distObject);//********(1) 
  
 System.out.println("***测试字符串下标**********abc['user2'].name:"+result); 
 //输出:***测试字符串下标**********abc['user2'].name:user2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值