Class DefaultMessageCodesResolver
- All Implemented Interfaces:
Serializable
,MessageCodesResolver
MessageCodesResolver
interface.
Will create two message codes for an object error, in the following order (when
using the prefixed
formatter
):
- 1.: code + "." + object name
- 2.: code
Will create four message codes for a field specification, in the following order:
- 1.: code + "." + object name + "." + field
- 2.: code + "." + field
- 3.: code + "." + field type
- 4.: code
For example, in case of code "typeMismatch", object name "user", field "age":
- 1. try "typeMismatch.user.age"
- 2. try "typeMismatch.age"
- 3. try "typeMismatch.int"
- 4. try "typeMismatch"
This resolution algorithm thus can be leveraged for example to show specific messages for binding errors like "required" and "typeMismatch":
- at the object + field level ("age" field, but only on "user");
- at the field level (all "age" fields, no matter which object name);
- or at the general level (all fields, on any object).
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":
- 1. try "typeMismatch.user.groups[0].name"
- 2. try "typeMismatch.user.groups.name"
- 3. try "typeMismatch.groups[0].name"
- 4. try "typeMismatch.groups.name"
- 5. try "typeMismatch.name"
- 6. try "typeMismatch.java.lang.String"
- 7. try "typeMismatch"
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.
- Since:
- 1.0.1
- Author:
- Juergen Hoeller, Phillip Webb, Chris Beams
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic enum
Common message code formats. -
Field Summary
Modifier and TypeFieldDescriptionstatic final String
The separator that this implementation uses when resolving message codes. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
buildFieldList
(String field, List<String> fieldList) Add both keyed and non-keyed entries for the suppliedfield
to the supplied field list.protected String
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
Specify a prefix to be applied to any code built by this resolver.
-
Field Details
-
CODE_SEPARATOR
The separator that this implementation uses when resolving message codes.- See Also:
-
-
Constructor Details
-
DefaultMessageCodesResolver
public DefaultMessageCodesResolver()
-
-
Method Details
-
setPrefix
Specify a prefix to be applied to any code built by this resolver.Default is none. Specify, for example, "validation." to get error codes like "validation.typeMismatch.name".
-
getPrefix
Return the prefix to be applied to any code built by this resolver.Returns an empty String in case of no prefix.
-
setMessageCodeFormatter
Specify the format for message codes built by this resolver.The default is
DefaultMessageCodesResolver.Format.PREFIX_ERROR_CODE
.- Since:
- 3.2
- See Also:
-
resolveMessageCodes
Description copied from interface:MessageCodesResolver
Build message codes for the given error code and object name. Used for building the codes list of an ObjectError.- Specified by:
resolveMessageCodes
in interfaceMessageCodesResolver
- Parameters:
errorCode
- the error code used for rejecting the objectobjectName
- the name of the object- Returns:
- the message codes to use
-
resolveMessageCodes
public String[] resolveMessageCodes(String errorCode, String objectName, String field, @Nullable 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.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.- Specified by:
resolveMessageCodes
in interfaceMessageCodesResolver
- Parameters:
errorCode
- the error code used for rejecting the valueobjectName
- the name of the objectfield
- the field namefieldType
- the field type (may benull
if not determinable)- Returns:
- the list of codes
-
buildFieldList
Add both keyed and non-keyed entries for the suppliedfield
to the supplied field list. -
postProcessMessageCode
Post-process the given message code, built by this resolver.The default implementation applies the specified prefix, if any.
- Parameters:
code
- the message code as built by this resolver- Returns:
- the final message code to be returned
- See Also:
-