Class Selection
Map, Iterable, or array.
For example, {1,2,3,4,5,6,7,8,9,10}.?[#isEven(#this)] evaluates
to [2, 4, 6, 8, 10].
Basically a subset of the input data is returned based on the evaluation of the expression supplied as selection criteria.
Null-safe Selection
Null-safe selection is supported via the '?.?' operator. For example,
'names?.?[#this.length > 5]' will evaluate to null if names
is null and will otherwise evaluate to a sequence containing the names
whose length is greater than 5. As of Spring Framework 7.0, null-safe selection
also applies when performing selection on an Optional target. For example,
if names is of type Optional<List<String>>, the expression
'names?.?[#this.length > 5]' will evaluate to null if names
is null or empty and will otherwise evaluate
to a sequence containing the names whose lengths are greater than 5, effectively
names.get().stream().filter(s -> s.length() > 5).toList().
- Since:
- 3.0
- Author:
- Andy Clement, Mark Fisher, Sam Brannen, Juergen Hoeller
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intAll items (?[]).static final intThe first item (^[]).static final intThe last item ($[]).Fields inherited from class SpelNodeImpl
children, exitTypeDescriptorFields inherited from interface Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V23, V24, V25, V9 -
Constructor Summary
ConstructorsConstructorDescriptionSelection(boolean nullSafe, int variant, int startPos, int endPos, SpelNodeImpl expression) -
Method Summary
Modifier and TypeMethodDescriptiongetValueInternal(ExpressionState state) protected ValueRefgetValueRef(ExpressionState state) final booleanDoes this node represent a null-safe selection operation?Return the string form of this AST node.Methods inherited from class SpelNodeImpl
generateCodeForArgument, generateCodeForArguments, generateCodeForArguments, getChild, getChildCount, getEndPosition, getExitDescriptor, getObjectClass, getStartPosition, getTypedValue, getValue, getValue, isWritable, nextChildIs, setValue, setValueInternalMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface SpelNode
generateCode, isCompilable
-
Field Details
-
ALL
public static final int ALLAll items (?[]).- See Also:
-
FIRST
public static final int FIRSTThe first item (^[]).- See Also:
-
LAST
public static final int LASTThe last item ($[]).- See Also:
-
-
Constructor Details
-
Selection
-
-
Method Details
-
isNullSafe
public final boolean isNullSafe()Does this node represent a null-safe selection operation?- Overrides:
isNullSafein classSpelNodeImpl- Returns:
trueif this node is the target of a null-safe operation- Since:
- 6.1.6
-
getValueInternal
- Specified by:
getValueInternalin classSpelNodeImpl- Throws:
EvaluationException
-
getValueRef
- Overrides:
getValueRefin classSpelNodeImpl- Throws:
EvaluationException
-
toStringAST
-