5

簡単にするために:

public class Person 
{
    String name; 
    Set<Address> addresses;
}

public class Address
{
     String city;
     String street;
}

とのマッチング

public interface PersonProxy extends EntityProxy 
{
     public String getName();
     public Set<AdressProxy> getAddresses();
}

public interface AdressProxy extends EntityProxy 
{
    public String getCity();
    public String getStreet();
}

UiBuinderクラスでAddressProxyを編集しましたが、Listを取得したが、データがPersonクラスに設定されている場合にListEditorを使用する方法は明らかですが、EditorFrameworkを使用して編集するにはどうすればよいですか。または、PersonProxyになったときにSetをListに変換するにはどうすればよいですか?

実装する一種のアダプタエディタクラスを配置しようとしました

LeafValueEditor<Set<AddressProxy>>

次に、LeafValueEditor.setValue()内でリストに移動し、リストの編集を処理する別のエディター階層で新しいdriver.edit()を開始しますが、運が良かったです。

4

2 に答える 2

6

CompositeEditor<Set<AddressProxy>, AddressProxy, AddressEditor>に似ていますが、の代わりにをListEditor処理する、を作成する必要があります。よくわかりませんが、どういうわけか委任できると思います。SetListListEditor

于 2012-05-26T09:14:18.587 に答える
3

私はポイントとルートでそれを行いました(1つのルートにはNポイントが含まれています):

ルート(複合):

@UiField
TextBox name;

@Ignore
@UiField
FlexTable listPoints;

PointsEditor pointsEditor = new PointsEditor();

     ....

pointsEditor.add(String id);

PointsEditor:

public class PointsEditor implements HasRequestContext<List<PointProxy>>, ValueAwareEditor<List<PointProxy>> {

    List<PointProxy> points = new ArrayList<PointProxy>(); 

    public void add(String id) {
       PointProxy point = ctx.create(PointProxy.class);
       point.setId(id);
       points.add(point);           
    }

ルート(サーバー側):

@Embedded
private List<Point> points = new ArrayList<Point>();

RouteProxy

public interface RouteProxy extends EntityProxy {

       abstract List<PointProxy> getPoints();

       abstract void setPoints(List<PointProxy> points);

PointProxy

public interface PointProxy extends ValueProxy {

...

}
于 2012-05-26T21:24:17.890 に答える