org.springframework.validation

## Class AbstractPropertyBindingResult

- java.lang.Object
- - org.springframework.validation.AbstractErrors
  - - org.springframework.validation.AbstractBindingResult
    - - org.springframework.validation.AbstractPropertyBindingResult

- All Implemented Interfaces:
    Serializable, BindingResult, Errors
  Direct Known Subclasses:
    BeanPropertyBindingResult, DirectFieldBindingResult

      public abstract class AbstractPropertyBindingResult
      extends AbstractBindingResult

  Abstract base class for `BindingResult` implementations that work with Spring's `PropertyAccessor` mechanism. Pre-implements field access through delegation to the corresponding PropertyAccessor methods.
  Since:
    2.0
  Author:
    Juergen Hoeller
  See Also:
    `getPropertyAccessor()`, `PropertyAccessor`, `ConfigurablePropertyAccessor`, Serialized Form

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.validation.BindingResult

      `MODEL_KEY_PREFIX`

    - ### Fields inherited from interface org.springframework.validation.Errors

      `NESTED_PATH_SEPARATOR`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractPropertyBindingResult(String objectName)` Create a new AbstractPropertyBindingResult instance.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected String` | `canonicalFieldName(String field)` Returns the canonical property name.
    `PropertyEditor` | `findEditor(String field, Class<?> valueType)` This implementation exposes a PropertyEditor adapter for a Formatter, if applicable.
    `protected Object` | `formatFieldValue(String field, Object value)` Formats the field value based on registered PropertyEditors.
    `protected Object` | `getActualFieldValue(String field)` Fetches the field value from the PropertyAccessor.
    `protected PropertyEditor` | `getCustomEditor(String fixedField)` Retrieve the custom PropertyEditor for the given field, if any.
    `Class<?>` | `getFieldType(String field)` Determines the field type from the property type.
    `abstract ConfigurablePropertyAccessor` | `getPropertyAccessor()` Provide the PropertyAccessor to work with, according to the concrete strategy of access.
    `PropertyEditorRegistry` | `getPropertyEditorRegistry()` Returns the underlying PropertyAccessor.
    `void` | `initConversion(ConversionService conversionService)`

    - ### Methods inherited from class org.springframework.validation.AbstractBindingResult

      `addAllErrors, addError, equals, getAllErrors, getErrorCount, getFieldError, getFieldError, getFieldErrors, getFieldErrors, getFieldValue, getGlobalError, getGlobalErrors, getMessageCodesResolver, getModel, getObjectName, getRawFieldValue, getSuppressedFields, getTarget, hasErrors, hashCode, recordSuppressedField, reject, rejectValue, resolveMessageCodes, resolveMessageCodes, setMessageCodesResolver`

    - ### Methods inherited from class org.springframework.validation.AbstractErrors

      `doSetNestedPath, fixedField, getFieldErrorCount, getFieldErrorCount, getGlobalErrorCount, getNestedPath, hasFieldErrors, hasFieldErrors, hasGlobalErrors, isMatchingFieldError, popNestedPath, pushNestedPath, reject, reject, rejectValue, rejectValue, setNestedPath, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.springframework.validation.Errors

      `getFieldErrorCount, getFieldErrorCount, getGlobalErrorCount, getNestedPath, hasFieldErrors, hasFieldErrors, hasGlobalErrors, popNestedPath, pushNestedPath, reject, reject, rejectValue, rejectValue, setNestedPath`

- - ### Constructor Detail

    - #### AbstractPropertyBindingResult

          protected AbstractPropertyBindingResult(String objectName)

      Create a new AbstractPropertyBindingResult instance.
      Parameters:
        `objectName` - the name of the target object
      See Also:
        `DefaultMessageCodesResolver`

  - ### Method Detail

    - #### initConversion

          public void initConversion(ConversionService conversionService)

    - #### getPropertyEditorRegistry

          public PropertyEditorRegistry getPropertyEditorRegistry()

      Returns the underlying PropertyAccessor.
      Specified by:
        `getPropertyEditorRegistry` in interface `BindingResult`
      Overrides:
        `getPropertyEditorRegistry` in class `AbstractBindingResult`
      Returns:
        the PropertyEditorRegistry, or `null` if none available for this BindingResult
      See Also:
        `getPropertyAccessor()`

    - #### canonicalFieldName

          protected String canonicalFieldName(String field)

      Returns the canonical property name.
      Overrides:
        `canonicalFieldName` in class `AbstractErrors`
      Parameters:
        `field` - the original field name
      Returns:
        the canonical field name
      See Also:
        `PropertyAccessorUtils.canonicalPropertyName(java.lang.String)`

    - #### getFieldType

          public Class<?> getFieldType(String field)

      Determines the field type from the property type.
      Specified by:
        `getFieldType` in interface `Errors`
      Overrides:
        `getFieldType` in class `AbstractBindingResult`
      Parameters:
        `field` - the field name
      Returns:
        the type of the field, or `null` if not determinable
      See Also:
        `getPropertyAccessor()`

    - #### getActualFieldValue

          protected Object getActualFieldValue(String field)

      Fetches the field value from the PropertyAccessor.
      Specified by:
        `getActualFieldValue` in class `AbstractBindingResult`
      Parameters:
        `field` - the field to check
      Returns:
        the current value of the field
      See Also:
        `getPropertyAccessor()`

    - #### formatFieldValue

          protected Object formatFieldValue(String field,
                                Object value)

      Formats the field value based on registered PropertyEditors.
      Overrides:
        `formatFieldValue` in class `AbstractBindingResult`
      Parameters:
        `field` - the field to check
        `value` - the value of the field (either a rejected value other than from a binding error, or an actual field value)
      Returns:
        the formatted value
      See Also:
        `getCustomEditor(java.lang.String)`

    - #### getCustomEditor

          protected PropertyEditor getCustomEditor(String fixedField)

      Retrieve the custom PropertyEditor for the given field, if any.
      Parameters:
        `fixedField` - the fully qualified field name
      Returns:
        the custom PropertyEditor, or `null`

    - #### findEditor

          public PropertyEditor findEditor(String field,
                                  Class<?> valueType)

      This implementation exposes a PropertyEditor adapter for a Formatter, if applicable.
      Specified by:
        `findEditor` in interface `BindingResult`
      Overrides:
        `findEditor` in class `AbstractBindingResult`
      Parameters:
        `field` - the path of the property (name or nested path), or `null` if looking for an editor for all properties of the given type
        `valueType` - the type of the property (can be `null` if a property is given but should be specified in any case for consistency checking)
      Returns:
        the registered editor, or `null` if none

    - #### getPropertyAccessor

          public abstract ConfigurablePropertyAccessor getPropertyAccessor()

      Provide the PropertyAccessor to work with, according to the concrete strategy of access.

      Note that a PropertyAccessor used by a BindingResult should always have its "extractOldValueForEditor" flag set to "true" by default, since this is typically possible without side effects for model objects that serve as data binding target.

      See Also:
        `ConfigurablePropertyAccessor.setExtractOldValueForEditor(boolean)`