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 errorCodes 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,
for example, "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
Nested ClassesModifier and TypeClassDescriptionstatic enumCommon message code formats. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe separator that this implementation uses when resolving message codes. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbuildFieldList(String field, List<String> fieldList) Add both keyed and non-keyed entries for the suppliedfieldto the supplied field list.protected StringReturn the prefix to be applied to any code built by this resolver.protected StringpostProcessMessageCode(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, @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.voidsetMessageCodeFormatter(@Nullable MessageCodeFormatter formatter) Specify the format for message codes built by this resolver.voidSpecify 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:MessageCodesResolverBuild message codes for the given error code and object name. Used for building the codes list of an ObjectError.- Specified by:
resolveMessageCodesin 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 javadocfor details on the generated codes.- Specified by:
resolveMessageCodesin interfaceMessageCodesResolver- Parameters:
errorCode- the error code used for rejecting the valueobjectName- the name of the objectfield- the field namefieldType- the field type (may benullif not determinable)- Returns:
- the list of codes
-
buildFieldList
Add both keyed and non-keyed entries for the suppliedfieldto 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:
-