ネストしたフォーム

以下のようなList型フィールドを持つモデルへフォームから代入したい場合

public static Parent {
  public String name;
  public List<Child> childList;
}

public static Child {
  public String name;
}

以下のようなビューviewForm.scala.htmlを作成し

@(form: Form[Parent])

@helper.form(CSRF(routes.Controller.postForm())){
  @helper.inputText(form("name"))
  @helper.repeat(form("childList"), min = 1) { childField =>
    @helper.inputText(childField("name"))
  }
}

以下のようにコントローラーでフォームをレンダリング / バインドすれば良い。

import views.html.viewForm;

public Result viewForm() {
  // フォームを作成
  Form<Parent> form = formFactory.form(Parent.class);

  // 初期値を作成
  Parent parent = new Parent();
  parent.name = "cyrus";
  parent.childList = new ArrayList<>();
  for(int i = 0; i < 5; i++){
    Child child = new Child();
    parent.childList.add(child);
  }

  // 初期値を設定
  form = form.fill(parent);

  return ok(viewForm(form).render());
}

public Result postForm() {
  // フォームをバインド
  Form<Parent> form = formFactory.form(Parent.class).bindFromRequest();

  // TODO
  return TODO;
}