public class DefaultMessageCodesResolver extends java.lang.Object implements MessageCodesResolver, java.io.Serializable
MessageCodesResolver
interface.
Will create two message codes for an object error, in the following order:
Will create four message codes for a field specification, in the following order:
For example, in case of code "typeMismatch", object name "user", field "age":
This resolution algorithm thus can be leveraged for example to show specific messages for binding errors like "required" and "typeMismatch":
In case of array, List
or Map
properties,
both codes for specific elements and for the whole collection are
generated. Assuming a field "name" of an array "groups" in object "user":
In order to group all codes into a specific category within your resource bundles,
e.g. "validation.typeMismatch.name" instead of the default "typeMismatch.name",
consider specifying a prefix
to be applied.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CODE_SEPARATOR
The separator that this implementation uses when resolving message codes.
|
private java.lang.String |
prefix |
Constructor and Description |
---|
DefaultMessageCodesResolver() |
Modifier and Type | Method and Description |
---|---|
protected void |
buildFieldList(java.lang.String field,
java.util.List<java.lang.String> fieldList)
Add both keyed and non-keyed entries for the supplied
field
to the supplied field list. |
protected java.lang.String |
getPrefix()
Return the prefix to be applied to any code built by this resolver.
|
protected java.lang.String |
postProcessMessageCode(java.lang.String code)
Post-process the given message code, built by this resolver.
|
java.lang.String[] |
resolveMessageCodes(java.lang.String errorCode,
java.lang.String objectName)
Build message codes for the given error code and object name.
|
java.lang.String[] |
resolveMessageCodes(java.lang.String errorCode,
java.lang.String objectName,
java.lang.String field,
java.lang.Class<?> fieldType)
Build the code list for the given code and field: an
object/field-specific code, a field-specific code, a plain error code.
|
void |
setPrefix(java.lang.String prefix)
Specify a prefix to be applied to any code built by this resolver.
|
public static final java.lang.String CODE_SEPARATOR
private java.lang.String prefix
public void setPrefix(java.lang.String prefix)
Default is none. Specify, for example, "validation." to get error codes like "validation.typeMismatch.name".
protected java.lang.String getPrefix()
Returns an empty String in case of no prefix.
public java.lang.String[] resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName)
MessageCodesResolver
resolveMessageCodes
in interface MessageCodesResolver
errorCode
- the error code used for rejecting the objectobjectName
- the name of the objectpublic java.lang.String[] resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName, java.lang.String field, java.lang.Class<?> fieldType)
Arrays, Lists and Maps are resolved both for specific elements and the whole collection.
See the class level Javadoc
for
details on the generated codes.
resolveMessageCodes
in interface MessageCodesResolver
errorCode
- the error code used for rejecting the valueobjectName
- the name of the objectfield
- the field namefieldType
- the field type (may be null
if not determinable)protected void buildFieldList(java.lang.String field, java.util.List<java.lang.String> fieldList)
field
to the supplied field list.protected java.lang.String postProcessMessageCode(java.lang.String code)
The default implementation applies the specified prefix, if any.
code
- the message code as built by this resolversetPrefix(java.lang.String)