Class BeanWrapperExpression

java.lang.Object
org.springframework.binding.expression.beanwrapper.BeanWrapperExpression
All Implemented Interfaces:
Expression

public class BeanWrapperExpression extends Object implements Expression
An expression that delegates to a bean wrapper to evaluate or set a property of a context. Also supports the configuration of a ConversionService to allow StringToObject type conversion to occur as part of setting a property. The StringToObject ConversionExecutors are automatically adapted and registered as PropertyEditors. Mainly exists to take advantage of BeanWrapper's unique property access features as an Expression implementation, notably the ability to infer types of generic collections and maps and perform type coersion on collection elements when setting values. Note that Spring's BeanWrapper is not a full-blown EL implementation: it only supports property access, and does not support method invocation, arithmetic operations, or logic operations.
Author:
Keith Donald, Scott Andrews
  • Constructor Details

    • BeanWrapperExpression

      public BeanWrapperExpression(String expression, ConversionService conversionService)
      Creates a new bean wrapper expression.
      Parameters:
      expression - the property expression string
      conversionService - the conversion service containing converters to use as PropertyEditors for type conversion
  • Method Details

    • setAutoGrowNestedPaths

      public void setAutoGrowNestedPaths(boolean autoGrowNestedPaths)
      Set whether this BeanWrapper should attempt to "auto-grow" a nested path that contains a null value.

      If "true", a null path location will be populated with a default object value and traversed instead of resulting in a NullValueInNestedPathException. Turning this flag on also enables auto-growth of collection elements when accessing an out-of-bounds index.

      Default is "false" on a plain BeanWrapper.

    • setAutoGrowCollectionLimit

      public void setAutoGrowCollectionLimit(int autoGrowCollectionLimit)
      Specify a limit for array and collection auto-growing.

      Default is unlimited on a plain BeanWrapper.

    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • getValue

      public Object getValue(Object context) throws EvaluationException
      Description copied from interface: Expression
      Evaluate this expression in the provided context and return the result of evaluation.
      Specified by:
      getValue in interface Expression
      Parameters:
      context - the context to evaluate this expression in
      Returns:
      the evaluation result
      Throws:
      EvaluationException - an exception occurred during expression evaluation
    • setValue

      public void setValue(Object context, Object value)
      Description copied from interface: Expression
      Set this expression in the provided context to the value provided.
      Specified by:
      setValue in interface Expression
      Parameters:
      context - the context on which the new value should be set
      value - the new value to set
    • getValueType

      public Class<?> getValueType(Object context)
      Description copied from interface: Expression
      Returns the most general type that can be passed to the Expression.setValue(Object, Object) method for the given context.
      Specified by:
      getValueType in interface Expression
      Parameters:
      context - the context to evaluate
      Returns:
      the most general type of value that can be set on this context, or null if the type information cannot be determined
    • getExpressionString

      public String getExpressionString()
      Description copied from interface: Expression
      Returns the original string used to create this expression, unmodified.
      Specified by:
      getExpressionString in interface Expression
      Returns:
      the original expression string
    • toString

      public String toString()
      Overrides:
      toString in class Object