集合投影

投影允许集合驱动子表达式的求值,结果是一个新的集合。投影的语法是 .![projectionExpression]。例如,假设我们有一个发明家列表,但我们想知道他们出生的城市列表。实际上,我们想对发明家列表中的每个条目求值 placeOfBirth.city。以下示例使用投影来实现这一点

  • Java

  • Kotlin

// evaluates to ["Smiljan", "Idvor"]
List placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")
		.getValue(societyContext, List.class);
// evaluates to ["Smiljan", "Idvor"]
val placesOfBirth = parser.parseExpression("members.![placeOfBirth.city]")
 		.getValue(societyContext) as List<*>

投影支持数组以及实现 java.lang.Iterablejava.util.Map 的任何类型。当使用 Map 进行投影时,投影表达式将针对 Map 中的每个条目(表示为 Java Map.Entry)进行求值。对 Map 进行投影的结果是一个列表,该列表由针对每个 Map 条目求值投影表达式的结果组成。

Spring 表达式语言还支持集合投影的安全导航。