public class DefaultMessageCodesResolver extends Object implements MessageCodesResolver, Serializable
MessageCodesResolver
interface.
Will create two message codes for an object error, in the following order (when
using the prefixed
formatter
):
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":
By default the errorCode
s will be placed at the beginning of constructed
message strings. The messageCodeFormatter
property can be used to specify an alternative concatenation
format
.
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 | Class and Description |
---|---|
static class |
DefaultMessageCodesResolver.Format
Common message code formats.
|
Modifier and Type | Field and Description |
---|---|
static String |
CODE_SEPARATOR
The separator that this implementation uses when resolving message codes.
|
Constructor and Description |
---|
DefaultMessageCodesResolver() |
Modifier and Type | Method and Description |
---|---|
protected void |
buildFieldList(String field,
List<String> fieldList)
Add both keyed and non-keyed entries for the supplied
field
to the supplied field list. |
protected String |
getPrefix()
Return the prefix to be applied to any code built by this resolver.
|
protected String |
postProcessMessageCode(String code)
Post-process the given message code, built by this resolver.
|
String[] |
resolveMessageCodes(String errorCode,
String objectName)
Build message codes for the given error code and object name.
|
String[] |
resolveMessageCodes(String errorCode,
String objectName,
String field,
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 |
setMessageCodeFormatter(MessageCodeFormatter formatter)
Specify the format for message codes built by this resolver.
|
void |
setPrefix(String prefix)
Specify a prefix to be applied to any code built by this resolver.
|
public static final String CODE_SEPARATOR
public void setPrefix(String prefix)
Default is none. Specify, for example, "validation." to get error codes like "validation.typeMismatch.name".
public void setMessageCodeFormatter(MessageCodeFormatter formatter)
The default is DefaultMessageCodesResolver.Format.PREFIX_ERROR_CODE
.
DefaultMessageCodesResolver.Format
protected String getPrefix()
Returns an empty String in case of no prefix.
public String[] resolveMessageCodes(String errorCode, String objectName)
MessageCodesResolver
resolveMessageCodes
in interface MessageCodesResolver
errorCode
- the error code used for rejecting the objectobjectName
- the name of the objectpublic String[] resolveMessageCodes(String errorCode, String objectName, String field, 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(String field, List<String> fieldList)
field
to the supplied field list.protected String postProcessMessageCode(String code)
The default implementation applies the specified prefix, if any.
code
- the message code as built by this resolversetPrefix(java.lang.String)