エラーコードをエラーメッセージに解決する
データバインディングと検証について説明しました。このセクションでは、検証エラーに対応するメッセージの出力について説明します。前のセクションの例では、name フィールドと age フィールドを拒否しました。MessageSource を使用してエラーメッセージを出力する場合は、フィールドを拒否するときに指定したエラーコード (この場合は 'name' と 'age') を使用して出力できます。Errors インターフェースから rejectValue またはその他の reject メソッドを (直接的に、または ValidationUtils クラスなどを使用して間接的に) 呼び出すと、基礎となる実装では渡されたコードが登録されるだけでなく、いくつかの追加エラーコードも登録されます。MessageCodesResolver は、Errors インターフェースがどのエラーコードに登録するかを決定します。デフォルトでは DefaultMessageCodesResolver が使用されます。これは (たとえば) 指定したコードを含むメッセージを登録するだけでなく、拒否メソッドに渡したフィールド名を含むメッセージも登録します。rejectValue("age", "too.darn.old") を使用してフィールドを拒否した場合、too.darn.old コードに加えて、Spring は too.darn.old.age と too.darn.old.age.int も登録します(前者はフィールド名、後者はフィールドの型を含みます)。これは、開発者がエラーメッセージを絞り込む際の利便性のために行われます。
MessageCodesResolver およびデフォルト戦略の詳細は、それぞれ MessageCodesResolver (Javadoc) および DefaultMessageCodesResolver (Javadoc) の javadoc にあります。