public interface Errors
Field names are typically properties of the target object (e.g. "name"
when binding to a customer object). Implementations may also support nested
fields in case of nested objects (e.g. "address.street"), in conjunction
with subtree navigation via setNestedPath(java.lang.String)
: for example, an
AddressValidator
may validate "address", not being aware that this
is a nested object of a top-level customer object.
Note: Errors
objects are single-threaded.
Validator
,
ValidationUtils
,
BindException
,
BindingResult
Modifier and Type | Field and Description |
---|---|
static String |
NESTED_PATH_SEPARATOR
The separator between path elements in a nested path,
for example in "customer.name" or "customer.address.street".
|
Modifier and Type | Method and Description |
---|---|
void |
addAllErrors(Errors errors)
Add all errors from the given
Errors instance to this
Errors instance. |
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.
|
int |
getFieldErrorCount()
Determine the number of errors associated with a field.
|
int |
getFieldErrorCount(String field)
Determine the number of errors associated with the given field.
|
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)
Determine the type of the given field, as far as possible.
|
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.
|
int |
getGlobalErrorCount()
Determine the number of global errors.
|
List<ObjectError> |
getGlobalErrors()
Get all global errors.
|
String |
getNestedPath()
Return the current nested path of this
Errors object. |
String |
getObjectName()
Return the name of the bound root object.
|
boolean |
hasErrors()
Determine if there were any errors.
|
boolean |
hasFieldErrors()
Determine if there were any errors associated with a field.
|
boolean |
hasFieldErrors(String field)
Determine if there were any errors associated with the given field.
|
boolean |
hasGlobalErrors()
Determine if there were any global errors.
|
void |
popNestedPath()
Pop the former nested path from the nested path stack.
|
void |
pushNestedPath(String subPath)
Push the given sub path onto the nested path stack.
|
void |
reject(String errorCode)
Register a global error for the entire target object,
using the given error description.
|
void |
reject(String errorCode,
Object[] errorArgs,
String defaultMessage)
Register a global error for the entire target object,
using the given error description.
|
void |
reject(String errorCode,
String defaultMessage)
Register a global error for the entire target object,
using the given error description.
|
void |
rejectValue(String field,
String errorCode)
Register a field error for the specified field of the current object
(respecting the current nested path, if any), 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.
|
void |
rejectValue(String field,
String errorCode,
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.
|
void |
setNestedPath(String nestedPath)
Allow context to be changed so that standard validators can validate
subtrees.
|
static final String NESTED_PATH_SEPARATOR
"." = same as the
nested property separator
in the beans package.
String getObjectName()
void setNestedPath(String nestedPath)
For example, an address validator could validate the subobject "address" of a customer object.
nestedPath
- nested path within this object,
e.g. "address" (defaults to "", null
is also acceptable).
Can end with a dot: both "address" and "address." are valid.getNestedPath()
String getNestedPath()
Errors
object.
Returns a nested path with a dot, i.e. "address.", for easy building of concatenated paths. Default is an empty String.
setNestedPath(String)
void pushNestedPath(String subPath)
A popNestedPath()
call will reset the original
nested path before the corresponding
pushNestedPath(String)
call.
Using the nested path stack allows to set temporary nested paths for subobjects without having to worry about a temporary path holder.
For example: current path "spouse.", pushNestedPath("child") → result path "spouse.child."; popNestedPath() → "spouse." again.
subPath
- the sub path to push onto the nested path stackpopNestedPath()
void popNestedPath() throws IllegalStateException
IllegalStateException
- if there is no former nested path on the stackpushNestedPath(String)
void reject(String errorCode)
errorCode
- error code, interpretable as a message keyreject(String, Object[], String)
void reject(String errorCode, String defaultMessage)
errorCode
- error code, interpretable as a message keydefaultMessage
- fallback default messagereject(String, Object[], String)
void reject(String errorCode, @Nullable Object[] errorArgs, @Nullable String defaultMessage)
errorCode
- error code, interpretable as a message keyerrorArgs
- error arguments, for argument binding via MessageFormat
(can be null
)defaultMessage
- fallback default messagerejectValue(String, String, Object[], String)
void rejectValue(@Nullable String field, String errorCode)
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.
field
- the field name (may be null
or empty String)errorCode
- error code, interpretable as a message keyrejectValue(String, String, Object[], String)
void rejectValue(@Nullable String field, String errorCode, String defaultMessage)
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.
field
- the field name (may be null
or empty String)errorCode
- error code, interpretable as a message keydefaultMessage
- fallback default messagerejectValue(String, String, Object[], String)
void rejectValue(@Nullable String field, String errorCode, @Nullable Object[] errorArgs, @Nullable String defaultMessage)
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.
field
- the field name (may be null
or empty String)errorCode
- error code, interpretable as a message keyerrorArgs
- error arguments, for argument binding via MessageFormat
(can be null
)defaultMessage
- fallback default messagereject(String, Object[], String)
void addAllErrors(Errors errors)
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.
errors
- the Errors
instance to merge ingetAllErrors()
boolean hasErrors()
hasGlobalErrors()
,
hasFieldErrors()
int getErrorCount()
getGlobalErrorCount()
,
getFieldErrorCount()
List<ObjectError> getAllErrors()
ObjectError
/FieldError
instancesgetGlobalErrors()
,
getFieldErrors()
boolean hasGlobalErrors()
hasFieldErrors()
int getGlobalErrorCount()
getFieldErrorCount()
List<ObjectError> getGlobalErrors()
ObjectError
instancesgetFieldErrors()
@Nullable ObjectError getGlobalError()
null
getFieldError()
boolean hasFieldErrors()
hasGlobalErrors()
int getFieldErrorCount()
getGlobalErrorCount()
List<FieldError> getFieldErrors()
FieldError
instancesgetGlobalErrors()
@Nullable FieldError getFieldError()
null
getGlobalError()
boolean hasFieldErrors(String field)
field
- the field namehasFieldErrors()
int getFieldErrorCount(String field)
field
- the field namegetFieldErrorCount()
List<FieldError> getFieldErrors(String field)
Implementations may support not only full field names like "address.street" but also pattern matches like "address.*".
field
- the field nameFieldError
instancesgetFieldErrors()
@Nullable FieldError getFieldError(String field)
field
- the field namenull
getFieldError()
@Nullable Object getFieldValue(String field)
Allows for convenient access to user-specified field values, even if there were type mismatches.
field
- the field namegetFieldType(String)
@Nullable Class<?> getFieldType(String field)
Implementations should be able to determine the type even
when the field value is null
, for example from some
associated descriptor.
field
- the field namenull
if not determinablegetFieldValue(String)