public abstract class AbstractErrors extends java.lang.Object implements Errors, java.io.Serializable
Errors
interface. Provides common
access to evaluated errors; however, does not define concrete management
of ObjectErrors
and FieldErrors
.NESTED_PATH_SEPARATOR
Constructor and Description |
---|
AbstractErrors() |
Modifier and Type | Method and Description |
---|---|
protected java.lang.String |
canonicalFieldName(java.lang.String field)
Determine the canonical field name for the given field.
|
protected void |
doSetNestedPath(java.lang.String nestedPath)
Actually set the nested path.
|
protected java.lang.String |
fixedField(java.lang.String field)
Transform the given field into its full path,
regarding the nested path of this instance.
|
java.util.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(java.lang.String field)
Get the first error associated with the given field, if any.
|
int |
getFieldErrorCount()
Return the number of errors associated with a field.
|
int |
getFieldErrorCount(java.lang.String field)
Return the number of errors associated with the given field.
|
java.util.List<FieldError> |
getFieldErrors(java.lang.String field)
Get all errors associated with the given field.
|
java.lang.Class<?> |
getFieldType(java.lang.String field)
Return the type of a given field.
|
ObjectError |
getGlobalError()
Get the first global error, if any.
|
int |
getGlobalErrorCount()
Return the number of global errors.
|
java.lang.String |
getNestedPath()
Return the current nested path of this
Errors object. |
boolean |
hasErrors()
Return if there were any errors.
|
boolean |
hasFieldErrors()
Are there any field errors?
|
boolean |
hasFieldErrors(java.lang.String field)
Are there any errors associated with the given field?
|
boolean |
hasGlobalErrors()
Are there any global errors?
|
protected boolean |
isMatchingFieldError(java.lang.String field,
FieldError fieldError)
Check whether the given FieldError matches the given field.
|
void |
popNestedPath()
Pop the former nested path from the nested path stack.
|
void |
pushNestedPath(java.lang.String subPath)
Push the given sub path onto the nested path stack.
|
void |
reject(java.lang.String errorCode)
Register a global error for the entire target object,
using the given error description.
|
void |
reject(java.lang.String errorCode,
java.lang.String defaultMessage)
Register a global error for the entire target object,
using the given error description.
|
void |
rejectValue(java.lang.String field,
java.lang.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(java.lang.String field,
java.lang.String errorCode,
java.lang.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(java.lang.String nestedPath)
Allow context to be changed so that standard validators can validate
subtrees.
|
java.lang.String |
toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
addAllErrors, getFieldErrors, getFieldValue, getGlobalErrors, getObjectName, reject, rejectValue
public void setNestedPath(@Nullable java.lang.String nestedPath)
Errors
For example, an address validator could validate the subobject "address" of a customer object.
setNestedPath
in interface Errors
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.public java.lang.String getNestedPath()
Errors
Errors
object.
Returns a nested path with a dot, i.e. "address.", for easy building of concatenated paths. Default is an empty String.
getNestedPath
in interface Errors
public void pushNestedPath(java.lang.String subPath)
Errors
A Errors.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.
pushNestedPath
in interface Errors
subPath
- the sub path to push onto the nested path stackErrors.popNestedPath()
public void popNestedPath() throws java.lang.IllegalStateException
Errors
popNestedPath
in interface Errors
java.lang.IllegalStateException
- if there is no former nested path on the stackErrors.pushNestedPath(java.lang.String)
protected void doSetNestedPath(@Nullable java.lang.String nestedPath)
protected java.lang.String fixedField(@Nullable java.lang.String field)
protected java.lang.String canonicalFieldName(java.lang.String field)
The default implementation simply returns the field name as-is.
field
- the original field namepublic void reject(java.lang.String errorCode)
Errors
public void reject(java.lang.String errorCode, java.lang.String defaultMessage)
Errors
public void rejectValue(@Nullable java.lang.String field, java.lang.String errorCode)
Errors
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.
rejectValue
in interface Errors
field
- the field name (may be null
or empty String)errorCode
- error code, interpretable as a message keyErrors.getNestedPath()
public void rejectValue(@Nullable java.lang.String field, java.lang.String errorCode, java.lang.String defaultMessage)
Errors
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.
rejectValue
in interface Errors
field
- the field name (may be null
or empty String)errorCode
- error code, interpretable as a message keydefaultMessage
- fallback default messageErrors.getNestedPath()
public boolean hasErrors()
Errors
public int getErrorCount()
Errors
getErrorCount
in interface Errors
public java.util.List<ObjectError> getAllErrors()
Errors
getAllErrors
in interface Errors
ObjectError
instancespublic boolean hasGlobalErrors()
Errors
hasGlobalErrors
in interface Errors
true
if there are any global errorsErrors.hasFieldErrors()
public int getGlobalErrorCount()
Errors
getGlobalErrorCount
in interface Errors
Errors.getFieldErrorCount()
@Nullable public ObjectError getGlobalError()
Errors
getGlobalError
in interface Errors
null
public boolean hasFieldErrors()
Errors
hasFieldErrors
in interface Errors
true
if there are any errors associated with a fieldErrors.hasGlobalErrors()
public int getFieldErrorCount()
Errors
getFieldErrorCount
in interface Errors
Errors.getGlobalErrorCount()
@Nullable public FieldError getFieldError()
Errors
getFieldError
in interface Errors
null
public boolean hasFieldErrors(java.lang.String field)
Errors
hasFieldErrors
in interface Errors
field
- the field nametrue
if there were any errors associated with the given fieldpublic int getFieldErrorCount(java.lang.String field)
Errors
getFieldErrorCount
in interface Errors
field
- the field namepublic java.util.List<FieldError> getFieldErrors(java.lang.String field)
Errors
Implementations should support not only full field names like "name" but also pattern matches like "na*" or "address.*".
getFieldErrors
in interface Errors
field
- the field nameFieldError
instances@Nullable public FieldError getFieldError(java.lang.String field)
Errors
getFieldError
in interface Errors
field
- the field namenull
@Nullable public java.lang.Class<?> getFieldType(java.lang.String field)
Errors
Implementations should be able to determine the type even
when the field value is null
, for example from some
associated descriptor.
getFieldType
in interface Errors
field
- the field namenull
if not determinableprotected boolean isMatchingFieldError(java.lang.String field, FieldError fieldError)
field
- the field that we are looking up FieldErrors forfieldError
- the candidate FieldErrorpublic java.lang.String toString()
toString
in class java.lang.Object