首页 > 代码库 > Struts2之Ognl基本操作、过滤、投影解读

Struts2之Ognl基本操作、过滤、投影解读

声明:最近在找合伙人一块做一个社交类型的APP,有能力者联系QQ:1126427292

 

一、学习案例:关于上一章的《HibernateOgnl详解》的演示项目很多朋友说后面的不是很了解。这一章就暂且做下讲解。

 

a)根对象就是我们通过context.setRoot(...);设置的对象,我们可以设置多个。

b)#,如果不是根对象就用#取对象,否则直接取对象。

c)调用静态方法需要使用@...@...。如:@java.lang.Integer@toBinaryString(10)。如果是调用Math中的方法,可直接使用@@...。如:@@max(1, 5)

d)对于定义列表或数组直接使用花括号{},如:{‘aa‘, ‘bb‘, ‘cc‘, ‘dd‘},访问数组中元素直接在花括号后面使用索引的方式:{...}.[0]

e)Map的定义使用了#,这个不同于之前讲的#,这个只是用来定义Map类型的。如:#{‘key1‘: ‘value1‘, ‘key2‘: ‘value2‘}[‘key3‘]

f)过滤(filtering):对集合(collection)中的元素按条件经行筛选,返回的对象也是一个集合。

如:#persons.{? #this.name.length() > 4}

表示的是遍历persons中的对象,满足对象中name长度大于4的返回。

1、#persons.{^ #this.name.length() > 4}表示返回满足条件的第一个对象。返回的类型是集合。

2、#persons.{$ #this.name.length() > 4}表示返回满足条件的最后一个对象。返回的类型是集合。

3、#this代表当前正在迭代的集合中的对象。

g)投影(projection):对集合(collection)中的元素按条件经行筛选,返回的对象是对象中的某一属性的一个集合。

1、#persons.{name}表示返回persons集合中每个对象的name属性的集合。返回值为:[zhangsan, lisi, wangwu]

2、#persons.{#this.name.length() <= 5 ? ‘Hello World‘ : #this.name}表示persons集合中对象的name属性值小于等于5的用‘Hello World‘代替,大于5的保持原值,然后以集合的形式返回。

返回值为:[zhangsan, Hello World, wangwu]

h)过滤和投影的区别:过滤是返回的原对象的集合,而投影返回的是原对象中属性的集合。类比于数据库中的表,过滤是取行操作,投影是取列操作。

 

 

三、经验之谈:

a)过滤和投影在项目用的很少,不过一旦使用将会有意想不到的效果。关于OGNL的知识了解的也差不多了。后面将会在struts2的标签中进行使用。

 

四、参考项目:http://download.csdn.net/detail/u011638419/8280245

 

五、每日一乐:

一群蚂蚁爬上了大象的背,但被摇了下来,只有一只蚂蚁死死地抱着大象的脖子不放,下面的蚂蚁大叫:掐死他,掐死他,小样,还他妈反了!

 

最终解释权归大学生创业所有。转载请注明出处。@www.23hhr.com

 

Struts2之Ognl基本操作、过滤、投影解读