九. 在集合中查询 OGNL 第4章. 表达式 (记不住了)

OGNL 提供一种简单的方法, 使得我们可以通过一个表达式在集合中选择一部分元素, 并作为一个新的集合返回.

我们称之为"查询", 这个术语也来自数据库, 数据库中的查询是指从表中选择一部分行. 例如, 下面这个表达式:

listeners.{? #this instanceof ActionListener}

返回一个列表, 其中的元素是listeners中所有是ActionListener实例的元素.(究竟是实例还是实例的对象)

关于OGNL如何将各种类型的对象当作集合来处理, 请阅读第5章. 对象到数据类型的强制转换.

 

查找第一个匹配项

 

为了从多个匹配元素中取得第一个匹配项, 可以使用索引的方式, 比如 listeners.{? true }[0]. 但是这种方式比较笨重, 因为如果查找结果为0件(也就是说结果列表为空), 这种代码将导致一个ArrayIndexOutOfBoundsException异常.

查询语法也支持只取得第一个匹配项, 并返回为一个列表. 如果查询本身没有匹配任何元素, 那么结果将是一个空列表.

objects.{^ #this instanceof String }

这个表达式将返回objects中第一个是String类实例的元素.

查找最后一个匹配项

 

与查找第一个匹配项类似, 有时你可能希望查找最后一个匹配项.

objects.{$ #this instanceof String }

这个表达式将返回objects中最后一个是String类实例的元素.

posted on 2016-07-11 20:40  雪的心  阅读(95)  评论(0编辑  收藏  举报

导航