此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10spring-doc.cadn.net.cn

系列选择

选择是一项功能强大的表达式语言功能,可让您通过从条目中选择将source 集合转换为另一个集合。spring-doc.cadn.net.cn

选择使用.?[selectionExpression]. 它过滤集合并返回一个包含原始元素子集的新集合。 例如 selection 让我们可以轻松获得塞尔维亚发明家的列表,如以下示例所示:spring-doc.cadn.net.cn

List<Inventor> list = (List<Inventor>) parser.parseExpression(
		"members.?[nationality == 'Serbian']").getValue(societyContext);
val list = parser.parseExpression(
		"members.?[nationality == 'Serbian']").getValue(societyContext) as List<Inventor>

数组和任何实现java.lang.Iterablejava.util.Map. 对于数组或Iterable,则选择表达式针对每个单独的元素进行计算。针对映射,选择表达式针对每个映射条目(Java 类型的对象Map.Entry). 每个地图条目都有其keyvalue可作为属性访问,以便在选择中使用。spring-doc.cadn.net.cn

给定一个Map存储在名为#map,则以下表达式返回一个新的map,该映射由原始映射中条目值小于的元素组成,其中条目的值小于27:spring-doc.cadn.net.cn

Map newMap = parser.parseExpression("#map.?[value < 27]").getValue(Map.class);
val newMap = parser.parseExpression("#map.?[value < 27]").getValue() as Map

除了返回所有选定的元素外,您还可以仅检索第一个或最后一个元素。要获取与选择表达式匹配的第一个元素,请语法为.^[selectionExpression]. 要获取与选择匹配的最后一个元素表达式,语法为.$[selectionExpression].spring-doc.cadn.net.cn

Spring 表达式语言还支持安全导航以选择集合。spring-doc.cadn.net.cn