クラス DefaultMessageCodesResolver

java.lang.ObjectSE
org.springframework.validation.DefaultMessageCodesResolver
実装されたすべてのインターフェース:
SerializableSEMessageCodesResolver

public class DefaultMessageCodesResolver extends ObjectSE implements MessageCodesResolver, SerializableSE
MessageCodesResolver インターフェースのデフォルト実装。

オブジェクトエラーに対して 2 つのメッセージコードを次の順序で作成します(prefixed formatter を使用する場合)。

  • 1.: コード + "." + オブジェクト名
  • 2.: コード

次の順序で、フィールド仕様の 4 つのメッセージコードを作成します。

  • 1.: コード + "." + オブジェクト名 + "." + フィールド
  • 2.: コード + "." + フィールド
  • 3.: コード + "." + フィールド型
  • 4.: コード

例: コード "typeMismatch"、オブジェクト名 "user"、フィールド "age" の場合:

  • 1. "typeMismatch.user.age" を試してください
  • 2. "typeMismatch.age" を試してください
  • 3. "typeMismatch.int" を試してください
  • 4. "typeMismatch" を試してください

この解決アルゴリズムは、たとえば「必須」や "typeMismatch" などのバインディングエラーに関する特定のメッセージを表示するために活用できます。

  • オブジェクト + フィールドレベル( "age" フィールド、ただし "user" のみ)。
  • フィールドレベル(オブジェクト名に関係なく、すべての "age" フィールド);
  • または一般的なレベル(すべてのフィールド、任意のオブジェクト)。

配列、ListSEMapSE プロパティの場合、特定の要素とコレクション全体の両方のコードが生成されます。オブジェクト "user" の配列 "groups" のフィールド "name" を想定する

  • 1. "typeMismatch.user.groups[0].name" を試してください
  • 2. "typeMismatch.user.groups.name" を試してください
  • 3. "typeMismatch.groups[0].name" を試してください
  • 4. "typeMismatch.groups.name" を試してください
  • 5. "typeMismatch.name" を試してください
  • 6. "typeMismatch.java.lang.String" を試してください
  • 7. "typeMismatch" を試してください

デフォルトでは、errorCode は構築されたメッセージ文字列の先頭に配置されます。messageCodeFormatter プロパティを使用して、代替連結 format を指定できます。

リソースバンドル内のすべてのコードを特定のカテゴリ (たとえば、デフォルトの "typeMismatch.name" ではなく "validation.typeMismatch.name" ) にグループ化するには、適用する prefix を指定することを検討してください。

導入:
1.0.1
作成者:
Juergen Hoeller, Phillip Webb, Chris Beams
関連事項:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static enum
    一般的なメッセージコード形式。
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final StringSE
    この実装がメッセージコードを解決するときに使用するセパレータ。
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    protected void
    提供されたフィールドリストに、提供された field のキー設定されたエントリとキー設定されていないエントリの両方を追加します。
    protected StringSE
    このリゾルバーによって構築されたすべてのコードに適用される接頭辞を返します。
    protected StringSE
    このリゾルバーによって構築された、指定されたメッセージコードを後処理します。
    resolveMessageCodes(StringSE errorCode, StringSE objectName)
    指定されたエラーコードとオブジェクト名のメッセージコードを作成します。
    resolveMessageCodes(StringSE errorCode, StringSE objectName, StringSE field, ClassSE<?> fieldType)
    指定されたコードとフィールドのコードリストを作成します: オブジェクト / フィールド固有のコード、フィールド固有のコード、プレーンなエラーコード。
    void
    このリゾルバーによって作成されたメッセージコードの形式を指定します。
    void
    このリゾルバーによってビルドされたコードに適用されるプレフィックスを指定します。

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • CODE_SEPARATOR

      public static final StringSE CODE_SEPARATOR
      この実装がメッセージコードを解決するときに使用するセパレータ。
      関連事項:
  • コンストラクターの詳細

    • DefaultMessageCodesResolver

      public DefaultMessageCodesResolver()
  • メソッドの詳細

    • setPrefix

      public void setPrefix(@Nullable StringSE prefix)
      このリゾルバーによってビルドされたコードに適用されるプレフィックスを指定します。

      デフォルトは none です。たとえば、"validation." を指定します。"validation.typeMismatch.name" のようなエラーコードを取得します。

    • getPrefix

      protected StringSE getPrefix()
      このリゾルバーによって構築されたすべてのコードに適用される接頭辞を返します。

      接頭辞がない場合は空の文字列を返します。

    • setMessageCodeFormatter

      public void setMessageCodeFormatter(@Nullable MessageCodeFormatter formatter)
      このリゾルバーによって作成されたメッセージコードの形式を指定します。

      デフォルトは DefaultMessageCodesResolver.Format.PREFIX_ERROR_CODE です。

      導入:
      3.2
      関連事項:
    • resolveMessageCodes

      public StringSE[] resolveMessageCodes(StringSE errorCode, StringSE objectName)
      インターフェースからコピーされた説明: MessageCodesResolver
      指定されたエラーコードとオブジェクト名のメッセージコードを作成します。ObjectError のコードリストを作成するために使用されます。
      次で指定:
      インターフェース MessageCodesResolverresolveMessageCodes 
      パラメーター:
      errorCode - オブジェクトを拒否するために使用されるエラーコード
      objectName - オブジェクトの名前
      戻り値:
      使用するメッセージコード
    • resolveMessageCodes

      public StringSE[] resolveMessageCodes(StringSE errorCode, StringSE objectName, StringSE field, @Nullable ClassSE<?> fieldType)
      指定されたコードとフィールドのコードリストを作成します: オブジェクト / フィールド固有のコード、フィールド固有のコード、プレーンなエラーコード。

      配列、リスト、マップは、特定の要素とコレクション全体の両方に対して解決されます。

      生成されたコードの詳細については、class level javadoc を参照してください。

      次で指定:
      インターフェース MessageCodesResolverresolveMessageCodes 
      パラメーター:
      errorCode - 値を拒否するために使用されるエラーコード
      objectName - オブジェクトの名前
      field - フィールド名
      fieldType - フィールド型 (決定できない場合は null になる可能性があります)
      戻り値:
      コードのリスト
    • buildFieldList

      protected void buildFieldList(StringSE field, ListSE<StringSE> fieldList)
      提供されたフィールドリストに、提供された field のキー設定されたエントリとキー設定されていないエントリの両方を追加します。
    • postProcessMessageCode

      protected StringSE postProcessMessageCode(StringSE code)
      このリゾルバーによって構築された、指定されたメッセージコードを後処理します。

      デフォルトの実装では、指定されたプレフィックスがある場合はそれを適用します。

      パラメーター:
      code - このリゾルバーによって構築されたメッセージコード
      戻り値:
      返される最終的なメッセージコード
      関連事項: