カマタです。
Play framework 2.4.2 + Javaです。
アノテーションによるバリデーションのテストを行っています。
フィールドレベルのバリデーションについては問題なく行えています。
メッセージも外部リソースファイル(messages.ja)を参照して表示しています。
しかし、クラスレベルのバリデーションについて、
エラーメッセージが外部リソースファイル(messages.ja)を
参照してくれない問題にぶつかっています。
バリデーションチェック自体は正しく動いていますが、
エラーメッセージとして表示されるのは”error.classcustom”です。
どのようにすれば、messages.jaを参照してくれるようになるでしょうか。
SampleClassCustom アノテーション
@Target({TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = SampleClassCustomValidator.class)
public @interface SampleClassCustom {
String message() default SampleClassCustomValidator.message;
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
SampleClassCustomValidator バリデータ
public class SampleClassCustomValidator
implements ConstraintValidator<SampleClassCustom, Book> {
final static public String message = "error.classcustom";
public void initialize(SampleClassCustom constraintAnnotation) {}
@Override
public boolean isValid(Book book, ConstraintValidatorContext context) {
if(book == null)
return true;
if (book.name.equals("test") && book.price > 10000) {
return false;
}
return true;
}
}
messages.ja
error.classcustom=クラスレベルカスタムエラー
Book
@SampleClassCustom
public class Book extends Model {
......