|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.beans.PropertyEditorRegistrySupport org.springframework.beans.AbstractPropertyAccessor org.springframework.beans.DirectFieldAccessor
public class DirectFieldAccessor
PropertyAccessor
implementation that directly accesses instance fields.
Allows for direct binding to fields instead of going through JavaBean setters.
This implementation just supports fields in the actual target object. It is not able to traverse nested fields.
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()
Field Summary | |
---|---|
private java.util.Map<java.lang.String,java.lang.reflect.Field> |
fieldMap
|
private java.lang.Object |
target
|
private TypeConverterDelegate |
typeConverterDelegate
|
Fields inherited from interface org.springframework.beans.PropertyAccessor |
---|
NESTED_PROPERTY_SEPARATOR, NESTED_PROPERTY_SEPARATOR_CHAR, PROPERTY_KEY_PREFIX, PROPERTY_KEY_PREFIX_CHAR, PROPERTY_KEY_SUFFIX, PROPERTY_KEY_SUFFIX_CHAR |
Constructor Summary | |
---|---|
DirectFieldAccessor(java.lang.Object target)
Create a new DirectFieldAccessor for the given target object. |
Method Summary | ||
---|---|---|
|
convertIfNecessary(java.lang.Object value,
java.lang.Class<T> requiredType,
MethodParameter methodParam)
Convert the value to the required type (if necessary from a String). |
|
java.lang.Class<?> |
getPropertyType(java.lang.String propertyName)
Determine the property type for the given property path. |
|
TypeDescriptor |
getPropertyTypeDescriptor(java.lang.String propertyName)
Return a type descriptor for the specified property: preferably from the read method, falling back to the write method. |
|
java.lang.Object |
getPropertyValue(java.lang.String propertyName)
Actually get the value of a property. |
|
boolean |
isReadableProperty(java.lang.String propertyName)
Determine whether the specified property is readable. |
|
boolean |
isWritableProperty(java.lang.String propertyName)
Determine whether the specified property is writable. |
|
void |
setPropertyValue(java.lang.String propertyName,
java.lang.Object newValue)
Actually set a property value. |
Methods inherited from class org.springframework.beans.AbstractPropertyAccessor |
---|
convertIfNecessary, isExtractOldValueForEditor, setExtractOldValueForEditor, setPropertyValue, setPropertyValues, setPropertyValues, setPropertyValues, setPropertyValues |
Methods inherited from class org.springframework.beans.PropertyEditorRegistrySupport |
---|
copyCustomEditorsTo, copyDefaultEditorsTo, findCustomEditor, getConversionService, getDefaultEditor, guessPropertyTypeFromEditors, hasCustomEditorForElement, isSharedEditor, overrideDefaultEditor, registerCustomEditor, registerCustomEditor, registerDefaultEditors, registerSharedEditor, setConversionService, useConfigValueEditors |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.springframework.beans.ConfigurablePropertyAccessor |
---|
getConversionService, setConversionService |
Methods inherited from interface org.springframework.beans.PropertyEditorRegistry |
---|
findCustomEditor, registerCustomEditor, registerCustomEditor |
Field Detail |
---|
private final java.lang.Object target
private final java.util.Map<java.lang.String,java.lang.reflect.Field> fieldMap
private final TypeConverterDelegate typeConverterDelegate
Constructor Detail |
---|
public DirectFieldAccessor(java.lang.Object target)
target
- the target object to accessMethod Detail |
---|
public boolean isReadableProperty(java.lang.String propertyName) throws BeansException
PropertyAccessor
Returns false
if the property doesn't exist.
propertyName
- the property to check
(may be a nested path and/or an indexed/mapped property)
BeansException
public boolean isWritableProperty(java.lang.String propertyName) throws BeansException
PropertyAccessor
Returns false
if the property doesn't exist.
propertyName
- the property to check
(may be a nested path and/or an indexed/mapped property)
BeansException
public java.lang.Class<?> getPropertyType(java.lang.String propertyName) throws BeansException
PropertyEditorRegistrySupport
Called 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 PropertyAccessor
getPropertyType
in class AbstractPropertyAccessor
propertyName
- the property path to determine the type for
null
if not determinable
InvalidPropertyException
- if there is no such property or
if the property isn't readable
PropertyAccessException
- if the property was valid but the
accessor method failed
BeansException
PropertyAccessor.getPropertyType(String)
public TypeDescriptor getPropertyTypeDescriptor(java.lang.String propertyName) throws BeansException
PropertyAccessor
propertyName
- the property to check
(may be a nested path and/or an indexed/mapped property)
null
if not determinable
InvalidPropertyException
- if there is no such property or
if the property isn't readable
BeansException
public java.lang.Object getPropertyValue(java.lang.String propertyName) throws BeansException
AbstractPropertyAccessor
getPropertyValue
in interface PropertyAccessor
getPropertyValue
in class AbstractPropertyAccessor
propertyName
- name of the property to get the value of
InvalidPropertyException
- if there is no such property or
if the property isn't readable
PropertyAccessException
- if the property was valid but the
accessor method failed
BeansException
public void setPropertyValue(java.lang.String propertyName, java.lang.Object newValue) throws BeansException
AbstractPropertyAccessor
setPropertyValue
in interface PropertyAccessor
setPropertyValue
in class AbstractPropertyAccessor
propertyName
- name of the property to set value ofnewValue
- the new value
InvalidPropertyException
- if there is no such property or
if the property isn't writable
PropertyAccessException
- if the property was valid but the
accessor method failed or a type mismatch occured
BeansException
public <T> T convertIfNecessary(java.lang.Object value, java.lang.Class<T> requiredType, MethodParameter methodParam) throws TypeMismatchException
TypeConverter
Conversions from String to any type will typically use the setAsText
method of the PropertyEditor class. Note that a PropertyEditor must be registered
for the given class for this to work; this is a standard JavaBeans API.
A number of PropertyEditors are automatically registered.
value
- the value to convertrequiredType
- the type we must convert to
(or null
if not known, for example in case of a collection element)methodParam
- the method parameter that is the target of the conversion
(for analysis of generic types; may be null
)
TypeMismatchException
- if type conversion failedPropertyEditor.setAsText(String)
,
PropertyEditor.getValue()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |