org.springframework.validation

## Class AbstractBindingResult

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

- All Implemented Interfaces:
    Serializable, BindingResult, Errors
  Direct Known Subclasses:
    AbstractPropertyBindingResult, MapBindingResult

      public abstract class AbstractBindingResult
      extends AbstractErrors
      implements BindingResult, Serializable

  Abstract implementation of the `BindingResult` interface and its super-interface `Errors`. Encapsulates common management of `ObjectErrors` and `FieldErrors`.
  Since:
    2.0
  Author:
    Juergen Hoeller, Rob Harrop
  See Also:
    `Errors`, 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` | `AbstractBindingResult(String objectName)` Create a new AbstractBindingResult instance.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addAllErrors(Errors errors)` Add all errors from the given `Errors` instance to this `Errors` instance.
    `void` | `addError(ObjectError error)` Add a custom `ObjectError` or `FieldError` to the errors list.
    `boolean` | `equals(Object other)`
    `PropertyEditor` | `findEditor(String field, Class<?> valueType)` This implementation delegates to the `PropertyEditorRegistry`'s editor lookup facility, if available.
    `protected Object` | `formatFieldValue(String field, Object value)` Format the given value for the specified field.
    `protected abstract Object` | `getActualFieldValue(String field)` Extract the actual field value for the given field.
    `List<ObjectError>` | `getAllErrors()` Get all errors, both global and field ones.
    `int` | `getErrorCount()` Return the total number of errors.
    `FieldError` | `getFieldError()` Get the first error associated with a field, if any.
    `FieldError` | `getFieldError(String field)` Get the first error associated with the given field, if any.
    `List<FieldError>` | `getFieldErrors()` Get all errors associated with a field.
    `List<FieldError>` | `getFieldErrors(String field)` Get all errors associated with the given field.
    `Class<?>` | `getFieldType(String field)` This default implementation determines the type based on the actual field value, if any.
    `Object` | `getFieldValue(String field)` Return the current value of the given field, either the current bean property value or a rejected update from the last binding.
    `ObjectError` | `getGlobalError()` Get the first global error, if any.
    `List<ObjectError>` | `getGlobalErrors()` Get all global errors.
    `MessageCodesResolver` | `getMessageCodesResolver()` Return the strategy to use for resolving errors into message codes.
    `Map<String,Object>` | `getModel()` Return a model Map for the obtained state, exposing an Errors instance as '`MODEL_KEY_PREFIX` + objectName' and the object itself.
    `String` | `getObjectName()` Return the name of the bound root object.
    `PropertyEditorRegistry` | `getPropertyEditorRegistry()` This implementation returns `null`.
    `Object` | `getRawFieldValue(String field)` Extract the raw field value for the given field.
    `String[]` | `getSuppressedFields()` Return the list of fields that were suppressed during the bind process.
    `abstract Object` | `getTarget()` Return the wrapped target object.
    `boolean` | `hasErrors()` Return if there were any errors.
    `int` | `hashCode()`
    `void` | `recordSuppressedField(String field)` Mark the specified disallowed field as suppressed.
    `void` | `reject(String errorCode, Object[] errorArgs, String defaultMessage)` Register a global error for the entire target object, using the given error description.
    `void` | `rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage)` Register a field error for the specified field of the current object (respecting the current nested path, if any), using the given error description.
    `String[]` | `resolveMessageCodes(String errorCode)` Resolve the given error code into message codes.
    `String[]` | `resolveMessageCodes(String errorCode, String field)` Resolve the given error code into message codes for the given field.
    `void` | `setMessageCodesResolver(MessageCodesResolver messageCodesResolver)` Set the strategy to use for resolving errors into message codes.

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

      `canonicalFieldName, 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

    - #### AbstractBindingResult

          protected AbstractBindingResult(String objectName)

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

  - ### Method Detail

    - #### setMessageCodesResolver

          public void setMessageCodesResolver(MessageCodesResolver messageCodesResolver)

      Set the strategy to use for resolving errors into message codes. Default is DefaultMessageCodesResolver.
      See Also:
        `DefaultMessageCodesResolver`

    - #### getMessageCodesResolver

          public MessageCodesResolver getMessageCodesResolver()

      Return the strategy to use for resolving errors into message codes.

    - #### getObjectName

          public String getObjectName()

      Description copied from interface: `Errors`
      Return the name of the bound root object.
      Specified by:
        `getObjectName` in interface `Errors`

    - #### reject

          public void reject(String errorCode,
                             Object[] errorArgs,
                             String defaultMessage)

      Description copied from interface: `Errors`
      Register a global error for the entire target object, using the given error description.
      Specified by:
        `reject` in interface `Errors`
      Parameters:
        `errorCode` - error code, interpretable as a message key
        `errorArgs` - error arguments, for argument binding via MessageFormat (can be `null`)
        `defaultMessage` - fallback default message

    - #### rejectValue

          public void rejectValue(String field,
                                  String errorCode,
                                  Object[] errorArgs,
                                  String defaultMessage)

      Description copied from interface: `Errors`
      Register a field error for the specified field of the current object (respecting the current nested path, if any), using the given error description.

      The field name may be `null` or empty String to indicate the current object itself rather than a field of it. This may result in a corresponding field error within the nested object graph or a global error if the current object is the top object.

      Specified by:
        `rejectValue` in interface `Errors`
      Parameters:
        `field` - the field name (may be `null` or empty String)
        `errorCode` - error code, interpretable as a message key
        `errorArgs` - error arguments, for argument binding via MessageFormat (can be `null`)
        `defaultMessage` - fallback default message
      See Also:
        `Errors.getNestedPath()`

    - #### addError

          public void addError(ObjectError error)

      Description copied from interface: `BindingResult`
      Add a custom `ObjectError` or `FieldError` to the errors list.

      Intended to be used by cooperating strategies such as `BindingErrorProcessor`.

      Specified by:
        `addError` in interface `BindingResult`
      See Also:
        `ObjectError`, `FieldError`, `BindingErrorProcessor`

    - #### addAllErrors

          public void addAllErrors(Errors errors)

      Description copied from interface: `Errors`
      Add all errors from the given `Errors` instance to this `Errors` instance.

      This is a onvenience method to avoid repeated `reject(..)` calls for merging an `Errors` instance into another `Errors` instance.

      Note that the passed-in `Errors` instance is supposed to refer to the same target object, or at least contain compatible errors that apply to the target object of this `Errors` instance.

      Specified by:
        `addAllErrors` in interface `Errors`
      Parameters:
        `errors` - the `Errors` instance to merge in

    - #### resolveMessageCodes

          public String[] resolveMessageCodes(String errorCode)

      Description copied from interface: `BindingResult`
      Resolve the given error code into message codes.

      Calls the configured `MessageCodesResolver` with appropriate parameters.

      Specified by:
        `resolveMessageCodes` in interface `BindingResult`
      Parameters:
        `errorCode` - the error code to resolve into message codes
      Returns:
        the resolved message codes

    - #### resolveMessageCodes

          public String[] resolveMessageCodes(String errorCode,
                                              String field)

      Description copied from interface: `BindingResult`
      Resolve the given error code into message codes for the given field.

      Calls the configured `MessageCodesResolver` with appropriate parameters.

      Specified by:
        `resolveMessageCodes` in interface `BindingResult`
      Parameters:
        `errorCode` - the error code to resolve into message codes
        `field` - the field to resolve message codes for
      Returns:
        the resolved message codes

    - #### hasErrors

          public boolean hasErrors()

      Description copied from interface: `Errors`
      Return if there were any errors.
      Specified by:
        `hasErrors` in interface `Errors`
      Overrides:
        `hasErrors` in class `AbstractErrors`

    - #### getErrorCount

          public int getErrorCount()

      Description copied from interface: `Errors`
      Return the total number of errors.
      Specified by:
        `getErrorCount` in interface `Errors`
      Overrides:
        `getErrorCount` in class `AbstractErrors`

    - #### getAllErrors

          public List<ObjectError> getAllErrors()

      Description copied from interface: `Errors`
      Get all errors, both global and field ones.
      Specified by:
        `getAllErrors` in interface `Errors`
      Overrides:
        `getAllErrors` in class `AbstractErrors`
      Returns:
        List of `ObjectError` instances

    - #### getGlobalErrors

          public List<ObjectError> getGlobalErrors()

      Description copied from interface: `Errors`
      Get all global errors.
      Specified by:
        `getGlobalErrors` in interface `Errors`
      Returns:
        List of ObjectError instances

    - #### getGlobalError

          public ObjectError getGlobalError()

      Description copied from interface: `Errors`
      Get the first global error, if any.
      Specified by:
        `getGlobalError` in interface `Errors`
      Overrides:
        `getGlobalError` in class `AbstractErrors`
      Returns:
        the global error, or `null`

    - #### getFieldErrors

          public List<FieldError> getFieldErrors()

      Description copied from interface: `Errors`
      Get all errors associated with a field.
      Specified by:
        `getFieldErrors` in interface `Errors`
      Returns:
        a List of `FieldError` instances

    - #### getFieldError

          public FieldError getFieldError()

      Description copied from interface: `Errors`
      Get the first error associated with a field, if any.
      Specified by:
        `getFieldError` in interface `Errors`
      Overrides:
        `getFieldError` in class `AbstractErrors`
      Returns:
        the field-specific error, or `null`

    - #### getFieldErrors

          public List<FieldError> getFieldErrors(String field)

      Description copied from interface: `Errors`
      Get all errors associated with the given field.

      Implementations should support not only full field names like "name" but also pattern matches like "na*" or "address.*".

      Specified by:
        `getFieldErrors` in interface `Errors`
      Overrides:
        `getFieldErrors` in class `AbstractErrors`
      Parameters:
        `field` - the field name
      Returns:
        a List of `FieldError` instances

    - #### getFieldError

          public FieldError getFieldError(String field)

      Description copied from interface: `Errors`
      Get the first error associated with the given field, if any.
      Specified by:
        `getFieldError` in interface `Errors`
      Overrides:
        `getFieldError` in class `AbstractErrors`
      Parameters:
        `field` - the field name
      Returns:
        the field-specific error, or `null`

    - #### getFieldValue

          public Object getFieldValue(String field)

      Description copied from interface: `Errors`
      Return the current value of the given field, either the current bean property value or a rejected update from the last binding.

      Allows for convenient access to user-specified field values, even if there were type mismatches.

      Specified by:
        `getFieldValue` in interface `Errors`
      Parameters:
        `field` - the field name
      Returns:
        the current value of the given field

    - #### getFieldType

          public Class<?> getFieldType(String field)

      This default implementation determines the type based on the actual field value, if any. Subclasses should override this to determine the type from a descriptor, even for `null` values.
      Specified by:
        `getFieldType` in interface `Errors`
      Overrides:
        `getFieldType` in class `AbstractErrors`
      Parameters:
        `field` - the field name
      Returns:
        the type of the field, or `null` if not determinable
      See Also:
        `getActualFieldValue(java.lang.String)`

    - #### getModel

          public Map<String,Object> getModel()

      Return a model Map for the obtained state, exposing an Errors instance as '`MODEL_KEY_PREFIX` + objectName' and the object itself.

      Note that the Map is constructed every time you're calling this method. Adding things to the map and then re-calling this method will not work.

      The attributes in the model Map returned by this method are usually included in the ModelAndView for a form view that uses Spring's bind tag, which needs access to the Errors instance.

      Specified by:
        `getModel` in interface `BindingResult`
      See Also:
        `getObjectName()`, `BindingResult.MODEL_KEY_PREFIX`, `ModelAndView`, `BindTag`

    - #### getRawFieldValue

          public Object getRawFieldValue(String field)

      Description copied from interface: `BindingResult`
      Extract the raw field value for the given field. Typically used for comparison purposes.
      Specified by:
        `getRawFieldValue` in interface `BindingResult`
      Parameters:
        `field` - the field to check
      Returns:
        the current value of the field in its raw form, or `null` if not known

    - #### findEditor

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

      This implementation delegates to the `PropertyEditorRegistry`'s editor lookup facility, if available.
      Specified by:
        `findEditor` in interface `BindingResult`
      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

    - #### getPropertyEditorRegistry

          public PropertyEditorRegistry getPropertyEditorRegistry()

      This implementation returns `null`.
      Specified by:
        `getPropertyEditorRegistry` in interface `BindingResult`
      Returns:
        the PropertyEditorRegistry, or `null` if none available for this BindingResult

    - #### recordSuppressedField

          public void recordSuppressedField(String field)

      Mark the specified disallowed field as suppressed.

      The data binder invokes this for each field value that was detected to target a disallowed field.

      Specified by:
        `recordSuppressedField` in interface `BindingResult`
      See Also:
        `DataBinder.setAllowedFields(java.lang.String...)`

    - #### getSuppressedFields

          public String[] getSuppressedFields()

      Return the list of fields that were suppressed during the bind process.

      Can be used to determine whether any field values were targetting disallowed fields.

      Specified by:
        `getSuppressedFields` in interface `BindingResult`
      See Also:
        `DataBinder.setAllowedFields(java.lang.String...)`

    - #### equals

          public boolean equals(Object other)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### getTarget

          public abstract Object getTarget()

      Return the wrapped target object.
      Specified by:
        `getTarget` in interface `BindingResult`

    - #### getActualFieldValue

          protected abstract Object getActualFieldValue(String field)

      Extract the actual field value for the given field.
      Parameters:
        `field` - the field to check
      Returns:
        the current value of the field

    - #### formatFieldValue

          protected Object formatFieldValue(String field,
                                            Object value)

      Format the given value for the specified field.

      The default implementation simply returns the field value as-is.

      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