任意のクラスをバリデーション対象にする方法

任意のPOJOクラスをバリデーションの対象とするには、クラスに@Constraints.Validateアノテーションを付け、Constraints.Validatable<List<ValidationError>>をimplementするようにすれば良い。

import play.data.validation.Constraints;
import play.data.validation.ValidationError;

@Constraints.Validate
public class SomeForm implements Constraints.Validatable<List<ValidationError>> {

    @Override
    public List<ValidationError> validate() {
        List<ValidationError> errors = new ArrayList<>();

        // バリデーション処理

        return errors.isEmpty() ? null : errors;
    }
}

コントローラー側では以下の様にbindできる。

Form<SomeForm> form = formFactory.form(SomeForm.class).bindFromRequest();