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
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
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
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
分享到:
相关推荐
struts2入门框架搭建需要的jar,包含log4j,struts2-core-2.5,ognl-3.1.15
2.OGNL入门 24 3.普通方法访问 24 4.静态方法访问 24 5.默认类Math的访问 24 6.调用普通类的构造方法 25 7.集合对象初步 25 8.集合对象进阶 25 9.N语法top语法 26 10.获取Stack Context中的信息 26 11.总结$ # %的...
javaPPT 从入门到精通 从基础到框架 70个PPT 1.初识java 2.变量、数据类型和运算符和表达式 3运算符和程序流程结构 4.数组 5.类和对象 6.字符串 7.封装,继承,多肽 8.接口与抽象类 9.java集合类 10.jdbc 11 html...
1.2.2 为什么使用框架 8 1.3 Struts 2框架 9 1.3.1 Struts 2简史 9 1.3.2 Struts 2概览:MVC模式 10 1.3.3 Struts 2的工作原理 12 1.4 小结 14 第2章 初识Struts 2 16 2.1 声明性架构 16 2.1.1 两种配置 16 2.1.2 ...
9.2.2 Struts2框架中的OGNL 9.2.3 操作普通的属性与方法 9.2.4 访问静态方法与属性 9.2.5 访问数组 9.2.6 访问List、Set、M印集合 9.2.7 投影与选择 9.3 Struts2的标签库 9.3.1 数据标签的应用 9.3.2 控制标签的应用...
第 1章 STRUTS2入门................................................................................................................................................3 第 2章STRUTS2晋级.....................
Lombok、okHttp、jwt、gson序列化与反序列化、ognl(对象图导航,简化json对象解析) 其它:QQ登录、微信扫码登录 三、开发环境 3.1、工具与环境 IDEA 2018.3.5 Maven 3 JDK8 Mysql 5.7+ Win10 64位系统 四、项目...
Struts2的讲义 1、入门及基本配置 2、类型转化 3、输入校验 4、校验框架 5、拦截器 6、文件上传与下载 7、国际化 8、深入了解struts 9、ognl
全当给所有打算使用struts2却没有接触过的人一个入门而已.我也是初看.才2天而已.所以各位高手就不要笑话了.愿大家都能成为高手. <br> 项目发布以后的第一个页面是登陆.后台代码没有写相关的验证代码.并不是...
(读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看...
1 入门.....................................................................................................................................4 1.1 环境搭建..................................................