OGNL框架的使用入门(二)

     OGNL可以用索引来访问数组,比如表达式abc[1].name,表示取得id为abc的数组的第1维的对象的name属性,注意,OGNL中的数组索引与Java一样,是从0开始的,下面的代码演示了如何访问数组:
[code]
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
[/code]
    OGNL提供了一些特别的索引符号访问数组中的特殊位置,如符号^表示数组的第1维元素,$表示最后一维,|表示中间的元素。表达式abc[^].name,表示取得id为abc的数组的第1维的对象的name属性。下面的代码演示了这些特殊的符号的用法。
[code]
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
[/code]
    OGNL把ArrayList也当作数组,下面的代码演示了OGNL如何访问ArrayList。
[code]
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
[/code]
    Map可以看作下标为字符串的数组。如果id为abc的map,包含key为"user0"的对象,则表达式abc["user0"]可以访问该对象。下面的代码演示了OGNL如何用用字符串下标访问Map。
[code]
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
[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值