首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

ONGL引见

2012-11-07 
ONGL介绍1.简介?OGNL:Object Graph Navigation Language,是一种功能强大的表达式语言,可以存取对象的属性,

ONGL介绍

1.简介

?

OGNL:Object Graph Navigation Language,是一种功能强大的表达式语言,可以存取对象的属性,调用对象的方法等。

?

著名的Struts2使用它来实现UI和Action之间的数据绑定。

?

2.两个重要的API

?

Ognl.getValue(String expression, Object root);

从root对象中获取expression对应的值

?

Ognl.getValue(String expression, Map<String, Object> context, Object root);

从根对象为root的上下文context中获取expression对应的值

?

我们可以从下面一段代码中看出context和root的区别

?

????????? 可以同构在#之后用"@"包围的类全名来指定

?

?? #{"name" : "007", "age" : 45}

?? #@java.util.LinkedHashMap@{"name" : "007", "age" : 45}

?

// in & not inassertTrue((Boolean) Ognl.getValue("'badminton' in {'badminton', 'CS'}", null));assertTrue((Boolean) Ognl.getValue("4 not in new int[]{1, 2, 3}", null));User user = new User();user.setId("000");User user1 = new User();user1.setId("001");User user2 = new User();user2.setId("002");List<User> users = new ArrayList<User>();users.add(user);users.add(user1);users.add(user2);// projectionList<String> ids = (List<String>) Ognl.getValue("#root.{id}", users);assertEquals("000", ids.get(0));assertEquals("001", ids.get(1));assertEquals("002", ids.get(2));// selectionList<User> filteredUsers = (List<User>) Ognl.getValue("#root.{? #this.id instanceof String}", users);assertEquals(user, Ognl.getValue("#root[0]", filteredUsers));// first matchList<User> filteredUsers1 = (List<User>) Ognl.getValue("#root.{^ #this.id instanceof String}", users);assertEquals(user, Ognl.getValue("#root[0]", filteredUsers1));List<User> filteredUsers2 = (List<User>) Ognl.getValue("#root.{$ #this.id instanceof String}", users);assertEquals(user2, Ognl.getValue("#root[0]", filteredUsers2));

?

4.参考资料

?

http://commons.apache.org/ognl/

热点排行