ネストしたフォーム
以下のような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;
}