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