エンティティの特定のフィールドが一部の条件で一意であるかどうかを確認するカスタムBean検証ツールがあります。検証に失敗した場合、メッセージには既に存在するエンティティのフィールド(IDなど)が含まれている必要があります。たとえば、メッセージは次のようになります。Bean検証メッセージの検証固有のパラメータを補間する
"Product 42 already has such a value defined, choose a unique value."
これはBean検証を使用して可能ですか?
AFAICSは、メッセージフォーマットは、次のようなパラメータを含むことができる:
"Length must be between {min} and {max}."
をしかし、これは、この場合には、検証アノテーションの「静的」属性を参照することができる:
@Size(min=1, max=16)
private String name;
で私の場合、値は私のカスタムバリデータのisValid
の中でのみ知られています。
問題は、バリデーターに最終メッセージを構成したくないということです。フォーマット(変換用)とパラメーターのみです。しかし、私はバリデータの中にメッセージをローカライズするはずです。 – robinst
私はもう一度答えを出して解決策を投稿しました。しかし、私はあなたの答えはより具体的なエラーメッセージを可能にすると考えています、ローカリゼーションがバリデーター内で行われる必要があっても、私はそれを受け入れました。 – robinst