Package 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
Description
`protected`
`AbstractBindingResult(String objectName)`
Create a new AbstractBindingResult instance.

## Method Summary

Modifier and Type
Method
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()`
Determine 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.
`org.springframework.beans.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()`
Determine if there were any errors.
`int`
`hashCode()`
`void`
`recordFieldValue(String field, Class<?> type, Object value)`
Record the given value for the specified field.
`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, getNestedPath, isMatchingFieldError, popNestedPath, pushNestedPath, 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

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

## Constructor Details

### AbstractBindingResult

protected AbstractBindingResult(String objectName)
Create a new AbstractBindingResult instance.

Parameters:
  `objectName` - the name of the target object
See Also:
  - `DefaultMessageCodesResolver`

## Method Details

### 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, @Nullable Object[] errorArgs, @Nullable 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
See Also:
  - `Errors.rejectValue(String, String, Object[], String)`

### rejectValue

public void rejectValue(@Nullable String field, String errorCode, @Nullable Object[] errorArgs, @Nullable 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.reject(String, Object[], String)`

### 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 convenience 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.

The default implementation throws `UnsupportedOperationException` since not all `Errors` implementations support `#addAllErrors`.

Specified by:
  `addAllErrors` in interface `Errors`
Parameters:
  `errors` - the `Errors` instance to merge in
See Also:
  - `Errors.getAllErrors()`

### hasErrors

public boolean hasErrors()
Description copied from interface: `Errors`
Determine if there were any errors.

Specified by:
  `hasErrors` in interface `Errors`
See Also:
  - `Errors.hasGlobalErrors()`
  - `Errors.hasFieldErrors()`

### getErrorCount

public int getErrorCount()
Description copied from interface: `Errors`
Determine the total number of errors.

Specified by:
  `getErrorCount` in interface `Errors`
See Also:
  - `Errors.getGlobalErrorCount()`
  - `Errors.getFieldErrorCount()`

### getAllErrors

public List<ObjectError> getAllErrors()
Description copied from interface: `Errors`
Get all errors, both global and field ones.

Specified by:
  `getAllErrors` in interface `Errors`
Returns:
  a list of `ObjectError`/`FieldError` instances
See Also:
  - `Errors.getGlobalErrors()`
  - `Errors.getFieldErrors()`

### getGlobalErrors

public List<ObjectError> getGlobalErrors()
Description copied from interface: `Errors`
Get all global errors.

Specified by:
  `getGlobalErrors` in interface `Errors`
Returns:
  a list of `ObjectError` instances
See Also:
  - `Errors.getFieldErrors()`

### getGlobalError

@Nullable public ObjectError getGlobalError()
Description copied from interface: `Errors`
Get the first global error, if any.

Specified by:
  `getGlobalError` in interface `Errors`
Returns:
  the global error, or `null`
See Also:
  - `Errors.getFieldError()`

### 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
See Also:
  - `Errors.getGlobalErrors()`

### getFieldError

@Nullable public FieldError getFieldError()
Description copied from interface: `Errors`
Get the first error associated with a field, if any.

Specified by:
  `getFieldError` in interface `Errors`
Returns:
  the field-specific error, or `null`
See Also:
  - `Errors.getGlobalError()`

### getFieldErrors

public List<FieldError> getFieldErrors(String field)
Description copied from interface: `Errors`
Get all errors associated with the given field.

Implementations may support not only full field names like "address.street" but also pattern matches like "address.*".

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

### getFieldError

@Nullable 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`
Parameters:
  `field` - the field name
Returns:
  the field-specific error, or `null`
See Also:
  - `Errors.getFieldError()`

### getFieldValue

@Nullable 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
See Also:
  - `Errors.getFieldType(String)`

### getFieldType

@Nullable public Class<?> getFieldType(@Nullable 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`
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`

### getRawFieldValue

@Nullable 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

@Nullable public PropertyEditor findEditor(@Nullable String field, @Nullable 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

@Nullable public org.springframework.beans.PropertyEditorRegistry getPropertyEditorRegistry()
This implementation returns `null`.

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

### 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, @Nullable 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

### 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`

### recordFieldValue

public void recordFieldValue(String field, Class<?> type, @Nullable Object value)
Description copied from interface: `BindingResult`
Record the given value for the specified field.

To be used when a target object cannot be constructed, making the original field values available through `Errors.getFieldValue(java.lang.String)`. In case of a registered error, the rejected value will be exposed for each affected field.

Specified by:
  `recordFieldValue` in interface `BindingResult`
Parameters:
  `field` - the field to record the value for
  `type` - the type of the field
  `value` - the original value

### 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 targeting disallowed fields.

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

### equals

public boolean equals(@Nullable Object other)

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### getTarget

@Nullable public abstract Object getTarget()
Return the wrapped target object.

Specified by:
  `getTarget` in interface `BindingResult`

### getActualFieldValue

@Nullable 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

@Nullable protected Object formatFieldValue(String field, @Nullable 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