Foo
2 つの属性とform
バインダーを持つ単純なクラスがあります。
import play.data.Form;
public class Foo {
public static Form<Foo> form = Form.form(Foo.class);
public String name;
public List<Bar> bars = new ArrayList<Bar>();
}
Bar
クラスの場所:
public class Bar {
public String prop1;
public String prop2;
}
POST ajaxリクエストを作成しようとすると:
jsRoutes.controllers.Test.duh().ajax({
data: {
name: "Test",
bars: [{prop1: "first"}]
}
});
当然の方法で、オンラインで:
Form<Foo> request = Foo.form.bindFromRequest();
エラーが発生します:
[InvalidPropertyException: Bean クラス [models.Foo] の無効なプロパティ 'bars[0][prop1]': インデックス付きプロパティ パス 'bars[0][prop1]' で参照されているプロパティは、配列でもリストでもマップでもありません。戻り値は[最初]]
AJAX リクエストのフォーム データは次のようになります。
name:Test
bars[0][prop1]:first
質問: play フレームワークで複雑な要素のリストをバインドする適切な方法は何ですか? このコードが機能するには、他に何が必要ですか?