Class PropertyEditorRegistrySupport
- All Implemented Interfaces:
PropertyEditorRegistry
- Direct Known Subclasses:
TypeConverterSupport
PropertyEditorRegistry
interface.
Provides management of default editors and custom editors.
Mainly serves as base class for BeanWrapperImpl
.- Since:
- 1.2.6
- Author:
- Juergen Hoeller, Rob Harrop, Sebastien Deleuze
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
copyCustomEditorsTo
(PropertyEditorRegistry target, String nestedProperty) Copy the custom editors registered in this instance to the given target registry.protected void
Copy the default editors registered in this instance to the given target registry.findCustomEditor
(Class<?> requiredType, String propertyPath) Find a custom property editor for the given type and property.Return the associated ConversionService, if any.getDefaultEditor
(Class<?> requiredType) Retrieve the default editor for the given property type, if any.protected Class<?>
getPropertyType
(String propertyPath) Determine the property type for the given property path.protected Class<?>
guessPropertyTypeFromEditors
(String propertyName) Guess the property type of the specified property from the registered custom editors (provided that they were registered for a specific type).boolean
hasCustomEditorForElement
(Class<?> elementType, String propertyPath) Determine whether this registry contains a custom editor for the specified array/collection element.void
overrideDefaultEditor
(Class<?> requiredType, PropertyEditor propertyEditor) Override the default editor for the specified type with the given property editor.void
registerCustomEditor
(Class<?> requiredType, PropertyEditor propertyEditor) Register the given custom property editor for all properties of the given type.void
registerCustomEditor
(Class<?> requiredType, String propertyPath, PropertyEditor propertyEditor) Register the given custom property editor for the given type and property, or for all properties of the given type.protected void
Activate the default editors for this registry instance, allowing for lazily registering default editors when needed.void
setConversionService
(ConversionService conversionService) Specify aConversionService
to use for converting property values, as an alternative to JavaBeans PropertyEditors.void
Activate config value editors which are only intended for configuration purposes, such asStringArrayPropertyEditor
.
-
Constructor Details
-
PropertyEditorRegistrySupport
public PropertyEditorRegistrySupport()
-
-
Method Details
-
setConversionService
Specify aConversionService
to use for converting property values, as an alternative to JavaBeans PropertyEditors. -
getConversionService
Return the associated ConversionService, if any. -
registerDefaultEditors
protected void registerDefaultEditors()Activate the default editors for this registry instance, allowing for lazily registering default editors when needed. -
useConfigValueEditors
public void useConfigValueEditors()Activate config value editors which are only intended for configuration purposes, such asStringArrayPropertyEditor
.Those editors are not registered by default simply because they are in general inappropriate for data binding purposes. Of course, you may register them individually in any case, through
registerCustomEditor(java.lang.Class<?>, java.beans.PropertyEditor)
. -
overrideDefaultEditor
Override the default editor for the specified type with the given property editor.Note that this is different from registering a custom editor in that the editor semantically still is a default editor. A ConversionService will override such a default editor, whereas custom editors usually override the ConversionService.
- Parameters:
requiredType
- the type of the propertypropertyEditor
- the editor to register- See Also:
-
getDefaultEditor
Retrieve the default editor for the given property type, if any.Lazily registers the default editors, if they are active.
- Parameters:
requiredType
- type of the property- Returns:
- the default editor, or
null
if none found - See Also:
-
copyDefaultEditorsTo
Copy the default editors registered in this instance to the given target registry.- Parameters:
target
- the target registry to copy to
-
registerCustomEditor
Description copied from interface:PropertyEditorRegistry
Register the given custom property editor for all properties of the given type.- Specified by:
registerCustomEditor
in interfacePropertyEditorRegistry
- Parameters:
requiredType
- the type of the propertypropertyEditor
- the editor to register
-
registerCustomEditor
public void registerCustomEditor(@Nullable Class<?> requiredType, @Nullable String propertyPath, PropertyEditor propertyEditor) Description copied from interface:PropertyEditorRegistry
Register the given custom property editor for the given type and property, or for all properties of the given type.If the property path denotes an array or Collection property, the editor will get applied either to the array/Collection itself (the
PropertyEditor
has to create an array or Collection value) or to each element (thePropertyEditor
has to create the element type), depending on the specified required type.Note: Only one single registered custom editor per property path is supported. In the case of a Collection/array, do not register an editor for both the Collection/array and each element on the same property.
For example, if you wanted to register an editor for "items[n].quantity" (for all values n), you would use "items.quantity" as the value of the 'propertyPath' argument to this method.
- Specified by:
registerCustomEditor
in interfacePropertyEditorRegistry
- Parameters:
requiredType
- the type of the property. This may benull
if a property is given but should be specified in any case, in particular in case of a Collection - making clear whether the editor is supposed to apply to the entire Collection itself or to each of its entries. So as a general rule: Do not specifynull
here in case of a Collection/array!propertyPath
- the path of the property (name or nested path), ornull
if registering an editor for all properties of the given typepropertyEditor
- editor to register
-
findCustomEditor
@Nullable public PropertyEditor findCustomEditor(@Nullable Class<?> requiredType, @Nullable String propertyPath) Description copied from interface:PropertyEditorRegistry
Find a custom property editor for the given type and property.- Specified by:
findCustomEditor
in interfacePropertyEditorRegistry
- Parameters:
requiredType
- the type of the property (can benull
if a property is given but should be specified in any case for consistency checking)propertyPath
- the path of the property (name or nested path), ornull
if looking for an editor for all properties of the given type- Returns:
- the registered editor, or
null
if none
-
hasCustomEditorForElement
public boolean hasCustomEditorForElement(@Nullable Class<?> elementType, @Nullable String propertyPath) Determine whether this registry contains a custom editor for the specified array/collection element.- Parameters:
elementType
- the target type of the element (can benull
if not known)propertyPath
- the property path (typically of the array/collection; can benull
if not known)- Returns:
- whether a matching custom editor has been found
-
getPropertyType
Determine the property type for the given property path.Called by
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 standardgetPropertyType
method as defined by the BeanWrapper interface.- Parameters:
propertyPath
- the property path to determine the type for- Returns:
- the type of the property, or
null
if not determinable - See Also:
-
guessPropertyTypeFromEditors
Guess the property type of the specified property from the registered custom editors (provided that they were registered for a specific type).- Parameters:
propertyName
- the name of the property- Returns:
- the property type, or
null
if not determinable
-
copyCustomEditorsTo
Copy the custom editors registered in this instance to the given target registry.- Parameters:
target
- the target registry to copy tonestedProperty
- the nested property path of the target registry, if any. If this is non-null, only editors registered for a path below this nested property will be copied. If this is null, all editors will be copied.
-