public class DirectFieldAccessor extends AbstractPropertyAccessor
PropertyAccessor implementation that directly accesses instance fields.
Allows for direct binding to fields instead of going through JavaBean setters.
As of Spring 4.1, this implementation supports nested field traversal.
A DirectFieldAccessor's default for the "extractOldValueForEditor" setting is "true", since a field can always be read without side effects.
AbstractPropertyAccessor.setExtractOldValueForEditor(boolean),
BeanWrapper,
DirectFieldBindingResult,
DataBinder.initDirectFieldAccess()NESTED_PROPERTY_SEPARATOR, NESTED_PROPERTY_SEPARATOR_CHAR, PROPERTY_KEY_PREFIX, PROPERTY_KEY_PREFIX_CHAR, PROPERTY_KEY_SUFFIX, PROPERTY_KEY_SUFFIX_CHAR| Constructor and Description |
|---|
DirectFieldAccessor(Object rootObject)
Create a new DirectFieldAccessor for the given root object.
|
| Modifier and Type | Method and Description |
|---|---|
Class<?> |
getPropertyType(String propertyPath)
Determine the property type for the given property path.
|
TypeDescriptor |
getPropertyTypeDescriptor(String propertyName)
Return a type descriptor for the specified property:
preferably from the read method, falling back to the write method.
|
Object |
getPropertyValue(String propertyName)
Actually get the value of a property.
|
Class<?> |
getRootClass()
Return the class of the root object at the top of the path of this instance.
|
Object |
getRootInstance()
Return the root object at the top of the path of this instance.
|
boolean |
isReadableProperty(String propertyName)
Determine whether the specified property is readable.
|
boolean |
isWritableProperty(String propertyName)
Determine whether the specified property is writable.
|
void |
setPropertyValue(String propertyName,
Object newValue)
Actually set a property value.
|
isAutoGrowNestedPaths, isExtractOldValueForEditor, setAutoGrowNestedPaths, setExtractOldValueForEditor, setPropertyValue, setPropertyValues, setPropertyValues, setPropertyValues, setPropertyValuesconvertIfNecessary, convertIfNecessary, convertIfNecessarycopyCustomEditorsTo, copyDefaultEditorsTo, findCustomEditor, getConversionService, getDefaultEditor, guessPropertyTypeFromEditors, hasCustomEditorForElement, overrideDefaultEditor, registerCustomEditor, registerCustomEditor, registerDefaultEditors, setConversionService, useConfigValueEditorsclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetConversionService, setConversionServicefindCustomEditor, registerCustomEditor, registerCustomEditorconvertIfNecessary, convertIfNecessary, convertIfNecessarypublic DirectFieldAccessor(Object rootObject)
rootObject - the root object to accesspublic final Object getRootInstance()
public final Class<?> getRootClass()
public boolean isReadableProperty(String propertyName) throws BeansException
PropertyAccessorReturns false if the property doesn't exist.
propertyName - the property to check
(may be a nested path and/or an indexed/mapped property)BeansExceptionpublic boolean isWritableProperty(String propertyName) throws BeansException
PropertyAccessorReturns false if the property doesn't exist.
propertyName - the property to check
(may be a nested path and/or an indexed/mapped property)BeansExceptionpublic Class<?> getPropertyType(String propertyPath) throws BeansException
PropertyEditorRegistrySupportCalled by PropertyEditorRegistrySupport.findCustomEditor(java.lang.Class<?>, java.lang.String) if no required type has been specified,
to be able to find a type-specific editor even if just given a property path.
The default implementation always returns null.
BeanWrapperImpl overrides this with the standard getPropertyType
method as defined by the BeanWrapper interface.
getPropertyType in interface PropertyAccessorgetPropertyType in class AbstractPropertyAccessorpropertyPath - the property path to determine the type fornull if not determinableInvalidPropertyException - if there is no such property or
if the property isn't readablePropertyAccessException - if the property was valid but the
accessor method failedBeansExceptionPropertyAccessor.getPropertyType(String)public TypeDescriptor getPropertyTypeDescriptor(String propertyName) throws BeansException
PropertyAccessorpropertyName - the property to check
(may be a nested path and/or an indexed/mapped property)null if not determinableInvalidPropertyException - if there is no such property or
if the property isn't readableBeansExceptionpublic Object getPropertyValue(String propertyName) throws BeansException
AbstractPropertyAccessorgetPropertyValue in interface PropertyAccessorgetPropertyValue in class AbstractPropertyAccessorpropertyName - name of the property to get the value ofInvalidPropertyException - if there is no such property or
if the property isn't readablePropertyAccessException - if the property was valid but the
accessor method failedBeansExceptionpublic void setPropertyValue(String propertyName, Object newValue) throws BeansException
AbstractPropertyAccessorsetPropertyValue in interface PropertyAccessorsetPropertyValue in class AbstractPropertyAccessorpropertyName - name of the property to set value ofnewValue - the new valueInvalidPropertyException - if there is no such property or
if the property isn't writablePropertyAccessException - if the property was valid but the
accessor method failed or a type mismatch occuredBeansException