メッセージテンプレート内で関連する制約アノテーションの属性のみを参照できます。たとえば、属性min
とmax
:を持つ制約の場合などです。
size must be between {min} and {max}
したがって、有効な値を注釈属性として指定できます。
BeanValidationプロバイダーとしてHibernateValidatorを使用している場合は、値のキーを持つバンドルを返すカスタムResourceBundleLocatorを実装できます。
public class MyResourceBundleLocator implements ResourceBundleLocator {
public ResourceBundle getResourceBundle(Locale locale) {
//return a bundle with keys for your values, e.g. set dynamically
}
}
次に、バリデーターを取得するときにロケーターを設定します。
Validator validator Validation.byProvider(HibernateValidator.class)
.configure()
.messageInterpolator(
new ResourceBundleMessageInterpolator(
new MyResourceBundleLocator() ) )
.buildValidatorFactory()
.getValidator();
または、メッセージを自分でフォーマットして準備し、に渡すこともできますbuildConstraintViolationWithTemplate()
。