类 DefaultMessageCodesResolver

  • 所有已实现的接口:
    Serializable, MessageCodesResolver

    public class DefaultMessageCodesResolver
    extends Object
    implements MessageCodesResolver, Serializable
    Default implementation of the MessageCodesResolver interface.

    Will create two message codes for an object error, in the following order (when using the prefixedformatter):

    • 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, e.g. "validation.typeMismatch.name" instead of the default "typeMismatch.name", consider specifying a prefix to be applied.

    从以下版本开始:
    1.0.1
    作者:
    Juergen Hoeller, Phillip Webb, Chris Beams
    另请参阅:
    序列化表格
    • 字段详细资料

    • 方法详细资料

      • setPrefix

        public void setPrefix​(String prefix)
        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

        protected String getPrefix()
        Return the prefix to be applied to any code built by this resolver.

        Returns an empty String in case of no prefix.

      • resolveMessageCodes

        public 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.

        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 在接口中 MessageCodesResolver
        参数:
        errorCode - the error code used for rejecting the value
        objectName - the name of the object
        field - the field name
        fieldType - the field type (may be null if not determinable)
        返回:
        the list of codes
      • buildFieldList

        protected void buildFieldList​(String field,
                                      List<String> fieldList)
        Add both keyed and non-keyed entries for the supplied field to the supplied field list.
      • postProcessMessageCode

        protected String postProcessMessageCode​(String code)
        Post-process the given message code, built by this resolver.

        The default implementation applies the specified prefix, if any.

        参数:
        code - the message code as built by this resolver
        返回:
        the final message code to be returned
        另请参阅:
        setPrefix(java.lang.String)