6

Foo2 つの属性と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 フレームワークで複雑な要素のリストをバインドする適切な方法は何ですか? このコードが機能するには、他に何が必要ですか?

4

2 に答える 2

0

このURL (POJO オブジェクト バインディング セクション) の playframework web を示しているため、エンティティ リストのバインディングは、bars[0].prop1である必要があります。

于 2013-09-12T11:14:11.927 に答える