为了简单起见:
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编辑,但现在运气好了。
答案 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 {
...
}