public class DefaultMessageCodesResolver extends java.lang.Object implements MessageCodesResolver, java.io.Serializable
MessageCodesResolver
インターフェースのデフォルト実装。 オブジェクトエラーに対して 2 つのメッセージコードを次の順序で作成します(prefixed
formatter
を使用する場合)。
次の順序で、フィールド仕様の 4 つのメッセージコードを作成します。
例: コード "typeMismatch" の場合、オブジェクト名 "user"、フィールド "age" :
この解決アルゴリズムを活用して、たとえば、"required" や "typeMismatch" などのバインディングエラーの特定のメッセージを表示できます。
配列、List
、Map
プロパティの場合、特定の要素とコレクション全体の両方のコードが生成されます。オブジェクト "user" の配列 "groups" のフィールド "name" を想定します。
デフォルトでは、errorCode
は構築されたメッセージ文字列の先頭に配置されます。messageCodeFormatter
プロパティを使用して、代替連結 format
を指定できます。
すべてのコードをリソースバンドル内の特定のカテゴリにグループ化するために、たとえばデフォルトの "typeMismatch.name" の代わりに "validation.typeMismatch.name" を使用する場合は、適用する prefix
を指定することを検討してください。
修飾子と型 | クラスと説明 |
---|---|
static class | DefaultMessageCodesResolver.Format 一般的なメッセージコード形式。 |
修飾子と型 | フィールドと説明 |
---|---|
static java.lang.String | CODE_SEPARATOR この実装がメッセージコードを解決するときに使用するセパレータ。 |
コンストラクターと説明 |
---|
DefaultMessageCodesResolver() |
修飾子と型 | メソッドと説明 |
---|---|
protected void | buildFieldList(java.lang.String field, java.util.List<java.lang.String> fieldList) 提供されたフィールドリストに、提供された field のキー設定されたエントリとキー設定されていないエントリの両方を追加します。 |
protected java.lang.String | getPrefix() このリゾルバーによって構築されたすべてのコードに適用される接頭辞を返します。 |
protected java.lang.String | postProcessMessageCode(java.lang.String code) このリゾルバーによって構築された、指定されたメッセージコードを後処理します。 |
java.lang.String[] | resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName) 指定されたエラーコードとオブジェクト名のメッセージコードを作成します。 |
java.lang.String[] | resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName, java.lang.String field, java.lang.Class<?> fieldType) 指定されたコードとフィールドのコードリストを作成します: オブジェクト / フィールド固有のコード、フィールド固有のコード、プレーンなエラーコード。 |
void | setMessageCodeFormatter(MessageCodeFormatter formatter) このリゾルバーによって作成されたメッセージコードの形式を指定します。 |
void | setPrefix(java.lang.String prefix) このリゾルバーによってビルドされたコードに適用されるプレフィックスを指定します。 |
public static final java.lang.String CODE_SEPARATOR
public void setPrefix(@Nullable java.lang.String prefix)
デフォルトは none です。たとえば、"validation." を指定します。"validation.typeMismatch.name" のようなエラーコードを取得します。
protected java.lang.String getPrefix()
接頭辞がない場合は空の文字列を返します。
public void setMessageCodeFormatter(@Nullable MessageCodeFormatter formatter)
デフォルトは DefaultMessageCodesResolver.Format.PREFIX_ERROR_CODE
です。
DefaultMessageCodesResolver.Format
public java.lang.String[] resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName)
MessageCodesResolver
MessageCodesResolver
の resolveMessageCodes
errorCode
- オブジェクトを拒否するために使用されるエラーコード objectName
- オブジェクトの名前 public java.lang.String[] resolveMessageCodes(java.lang.String errorCode, java.lang.String objectName, java.lang.String field, @Nullable java.lang.Class<?> fieldType)
配列、リスト、マップは、特定の要素とコレクション全体の両方に対して解決されます。
生成されたコードの詳細については、class level javadoc
を参照してください。
MessageCodesResolver
の resolveMessageCodes
errorCode
- 値を拒否するために使用されるエラーコード objectName
- オブジェクトの名前 field
- フィールド名 fieldType
- フィールド型 (決定できない場合は null
になる可能性があります)protected void buildFieldList(java.lang.String field, java.util.List<java.lang.String> fieldList)
field
のキー設定されたエントリとキー設定されていないエントリの両方を追加します。protected java.lang.String postProcessMessageCode(java.lang.String code)
デフォルトの実装では、指定されたプレフィックスがある場合はそれを適用します。
code
- このリゾルバーによって構築されたメッセージコード setPrefix(java.lang.String)