LoginSignup
3
3

More than 5 years have passed since last update.

Play Framework 2.4 java ネストしたformのvalidate

Posted at

子クラスのリストを持ったformのバリデーションのやり方があまりweb上に出てなかったのでメモ。

結論としては子クラスのリストに@Validアノテーション付けるだけだった。

Parent.java

public class Parent {
    public int id;
    @Valid
    public List<Child> child;
}
Child.java

public class Child{
    @Required(message = "名前を入力してください。")
    public String name;
    @MaxLength(value = 10, message = "10文字まで")
    public String memo;
}
HogeController.java
public Result hoge() {
    Form<Parent> parent_form = form(Parent.class).bindFromRequest();
    if (parent_form.hasErrors()) {
        // 子クラスのバリデーションも入ってる。
        return badRequest(views.html.hoge.create.render(parent_form));
    }

    return redirect("url");
}

多分、素直に作成してれば問題なかったんだけどCMSみたいなシステムを作ってたので表示制御用のプロパティをformのクラスに持ってたのがいけなかった。

注意点としてはformのプロパティは全て送信して受け取れるようにしておくこと。

if文で使うためだけのプロパティとかを送信してなかったのでbadRequest時の再描画でエラーになってた。

とりあえず全てのプロパティをhiddenで持つようにしたら問題なく動きました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3