九. 在集合中查询 OGNL 第4章. 表达式 (记不住了)
OGNL 提供一种简单的方法, 使得我们可以通过一个表达式在集合中选择一部分元素, 并作为一个新的集合返回.
我们称之为"查询", 这个术语也来自数据库, 数据库中的查询是指从表中选择一部分行. 例如, 下面这个表达式:
listeners.{? #this instanceof ActionListener}
返回一个列表, 其中的元素是listeners中所有是ActionListener类实例的元素.(究竟是实例还是实例的对象)
关于OGNL如何将各种类型的对象当作集合来处理, 请阅读第5章. 对象到数据类型的强制转换.
为了从多个匹配元素中取得第一个匹配项, 可以使用索引的方式, 比如 listeners.{? true }[0]. 但是这种方式比较笨重, 因为如果查找结果为0件(也就是说结果列表为空), 这种代码将导致一个ArrayIndexOutOfBoundsException异常.
查询语法也支持只取得第一个匹配项, 并返回为一个列表. 如果查询本身没有匹配任何元素, 那么结果将是一个空列表.
objects.{^ #this instanceof String }
这个表达式将返回objects中第一个是String类实例的元素.
孜孜不倦,必能求索;风尘仆仆,终有归途。