如何编辑Set <! - ?使用GWT Editor框架扩展EntityProxy - >?

时间:2012-05-26 01:37:07

标签: gwt requestfactory gwt-editors

为了简单起见:

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

public class Address
{
     String city;
     String street;
}

with和matching

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 如何使用Editor Framework编辑它们? 或者可能是当它变成PersonProxy时如何将Set转换为List?

我尝试了一种可以实现

的适配器编辑器类
LeafValueEditor<Set<AddressProxy>>

然后在LeafValueEditor.setValue()内部移动到List并在单独的Editor层次结构上启动一个新的driver.edit(),该层次结构负责List编辑,但现在运气好了。

2 个答案:

答案 0 :(得分:6)

您应该创建一个CompositeEditor<Set<AddressProxy>, AddressProxy, AddressEditor>,类似于ListEditor但是处理Set而不是List。 我想你可以以某种方式委托给ListEditor虽然我真的不确定。

答案 1 :(得分:3)

我已经完成了点和路线(一条路线包含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 {

...

}