org.springframework.validation

## 类 DefaultMessageCodesResolver

- java.lang.Object
- - org.springframework.validation.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 `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.

  从以下版本开始:
    1.0.1
  作者:
    Juergen Hoeller, Phillip Webb, Chris Beams
  另请参阅:
    序列化表格

- - ### 嵌套类概要

    嵌套类
    限定符和类型 | 类和说明
    --- | ---
    `static class` | `DefaultMessageCodesResolver.Format` Common message code formats.

  - ### 字段概要

    字段
    限定符和类型 | 字段和说明
    --- | ---
    `static String` | `CODE_SEPARATOR` The separator that this implementation uses when resolving message codes.

  - ### 构造器概要

    构造器
    构造器和说明
    `DefaultMessageCodesResolver()`

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `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.

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 字段详细资料

    - #### CODE_SEPARATOR

          public static final String CODE_SEPARATOR

      The separator that this implementation uses when resolving message codes.
      另请参阅:
        常量字段值

  - ### 构造器详细资料

    - #### DefaultMessageCodesResolver

          public DefaultMessageCodesResolver()

  - ### 方法详细资料

    - #### setPrefix

          public void setPrefix(@Nullable
                                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.

    - #### setMessageCodeFormatter

          public void setMessageCodeFormatter(@Nullable
                                              MessageCodeFormatter formatter)

      Specify the format for message codes built by this resolver.

      The default is `DefaultMessageCodesResolver.Format.PREFIX_ERROR_CODE`.

      从以下版本开始:
        3.2
      另请参阅:
        `DefaultMessageCodesResolver.Format`

    - #### resolveMessageCodes

          public String[] resolveMessageCodes(String errorCode,
                                              String objectName)

      从接口复制的说明: `MessageCodesResolver`
      Build message codes for the given error code and object name. Used for building the codes list of an ObjectError.
      指定者:
        `resolveMessageCodes` 在接口中 `MessageCodesResolver`
      参数:
        `errorCode` - the error code used for rejecting the object
        `objectName` - the name of the object
      返回:
        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.

      指定者:
        `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)`