Package org.springframework.expression
Interface PropertyAccessor
- All Superinterfaces:
TargetedAccessor
- All Known Subinterfaces:
CompilablePropertyAccessor
- All Known Implementing Classes:
BeanExpressionContextAccessor
,BeanFactoryAccessor
,DataBindingPropertyAccessor
,EnvironmentAccessor
,MapAccessor
,ReflectivePropertyAccessor
A property accessor is able to read from (and possibly write to) an object's
properties.
This interface places no restrictions on what constitutes a property. Implementors are therefore free to access properties directly via fields, through getters, or in any other way they deem appropriate.
A property accessor can specify an array of
target classes for which it should be
called. See TargetedAccessor
for details.
- Since:
- 3.0
- Author:
- Andy Clement
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionboolean
canRead
(EvaluationContext context, Object target, String name) Called to determine if this property accessor is able to read a specified property on a specified target object.boolean
canWrite
(EvaluationContext context, Object target, String name) Called to determine if this property accessor is able to write to a specified property on a specified target object.read
(EvaluationContext context, Object target, String name) Called to read a property from a specified target object.void
write
(EvaluationContext context, Object target, String name, Object newValue) Called to write to a property on a specified target object.Methods inherited from interface org.springframework.expression.TargetedAccessor
getSpecificTargetClasses
-
Method Details
-
canRead
boolean canRead(EvaluationContext context, @Nullable Object target, String name) throws AccessException Called to determine if this property accessor is able to read a specified property on a specified target object.- Parameters:
context
- the evaluation context in which the access is being attemptedtarget
- the target object upon which the property is being accessedname
- the name of the property being accessed- Returns:
- true if this property accessor is able to read the property
- Throws:
AccessException
- if there is any problem determining whether the property can be read
-
read
TypedValue read(EvaluationContext context, @Nullable Object target, String name) throws AccessException Called to read a property from a specified target object.Should only succeed if
canRead(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String)
also returnstrue
.- Parameters:
context
- the evaluation context in which the access is being attemptedtarget
- the target object upon which the property is being accessedname
- the name of the property being accessed- Returns:
- a TypedValue object wrapping the property value read and a type descriptor for it
- Throws:
AccessException
- if there is any problem reading the property value
-
canWrite
boolean canWrite(EvaluationContext context, @Nullable Object target, String name) throws AccessException Called to determine if this property accessor is able to write to a specified property on a specified target object.- Parameters:
context
- the evaluation context in which the access is being attemptedtarget
- the target object upon which the property is being accessedname
- the name of the property being accessed- Returns:
- true if this property accessor is able to write to the property
- Throws:
AccessException
- if there is any problem determining whether the property can be written to
-
write
void write(EvaluationContext context, @Nullable Object target, String name, @Nullable Object newValue) throws AccessException Called to write to a property on a specified target object.Should only succeed if
canWrite(org.springframework.expression.EvaluationContext, java.lang.Object, java.lang.String)
also returnstrue
.- Parameters:
context
- the evaluation context in which the access is being attemptedtarget
- the target object upon which the property is being accessedname
- the name of the property being accessednewValue
- the new value for the property- Throws:
AccessException
- if there is any problem writing to the property value
-