IntRangeアノテーションにおけるメッセージキー

バリデーション時のIntRangeアノテーションの使用において、独自のメッセージキーを指定したい。
ところが、IntRangeは「整数ではなかった」場合と「指定範囲におさまっていない」場合の
それぞれにメッセージが必要。

@IntRange(min = 0, max = 99, msg = @Msg(key = "message.number.invalid"))

などと記述した場合、0~99の間に収まっていない整数値だった場合は指定したキーのメッセージが出る。
しかし、例えば検証対象の値が「a」とかだった場合は

{0}は整数でなければいけません。

というデフォルトのメッセージ(application_ja.propertiesでは「errors.integer」というキーで定義されている)が
表示されてしまう。

例えば検証値のフィールド名が「number」だった場合、
「numberは整数でなければいけません。」
と表示されてしまう。これはダサい。

もちろんこの「errors.integer」の値を書き換えれば解決するといえばするが、
なんか許せない。

どうにかして両方とも独自メッセージにできないものか。

*** ついき ***

あっそうか、Msgアノテーションに「arg0=@Arg(key="番号", resource=false))」とか
追加すればいいのか。でも独自メッセージにはできてないな。

最終更新:2015年03月30日 11:34