Gwt 编辑器:自动映射包含对象的id

Gwt 编辑器:自动映射包含对象的id,gwt,Gwt,我有一个服务,它使用户能够搜索具有许多条件的某些项目 我有一个代表这些标准的类: public class ItemFilter{ private Integer idCountry; private Integer minPrice; private Integer maxPrice; ... //Getters and Setters } 然后,我使用编辑器编辑此过滤器的属性: public class ItemFilterEditor extends Compos

我有一个服务,它使用户能够搜索具有许多条件的某些项目

我有一个代表这些标准的类:

public class ItemFilter{

  private Integer idCountry;
  private Integer minPrice;
  private Integer maxPrice;
  ...

  //Getters and Setters
}
然后,我使用编辑器编辑此过滤器的属性:

public class ItemFilterEditor extends Composite implements Editor<ItemFilter> {

  ComboBox<Country> country;
  NumberField<Integer> minPrice;
  NumberField<Integer> maxPrixe;
  ...

}
公共类ItemFilterEditor扩展复合实现编辑器{
组合框国家;
numberfieldminprice;
NumberField maxPrixe;
...
}
这里的问题是,我需要一个组合框来允许用户选择一个国家,但是ItemFilter类只接受国家的id

问题:是否有一种方法可以在刷新编辑器时自动设置ItemFilter的idCountry

我找到的唯一解决方案是创建一个中间类并进行一些映射…

让编辑器实现
valueawareditor
,并在
setValue
flush
中进行映射

公共类ItemFilterEditor扩展复合实现ValueAwareEditor{
@编辑器。忽略组合框国家;
numberfieldminprice;
NumberField maxPrixe;
...
私有项过滤值;
@凌驾
公共无效设置值(ItemFilter值){
这个值=值;
//选择ID等于value.getIdCountry()的国家/地区中的项目
}
@凌驾
公共图书馆{
this.value.setIdCountry(/*获取所选国家的ID*/);
}
}
或者也可以使用
LeafValueEditor
进行映射:

公共类ItemFilterEditor扩展复合实现编辑器{
@编辑器。忽略组合框国家;
final LeafValueEditor idCountry=新的LeafValueEditor(){
@凌驾
公共无效设置值(整数值){
//选择ID等于value的国家/地区中的项目
}
@凌驾
公共整数getValue(){
return/*获取所选国家/地区的ID*/);
}
};
numberfieldminprice;
NumberField maxPrixe;
...
}

谢谢:)我使用LeafValueEditor编辑了这个问题以公开解决方案。如果有什么可以改进的地方,请不要犹豫。我第一次回复时是在手机上的。我只是用我所想的示例代码编辑了我的答案。我删除了我的解决方案:你的解决方案看起来更简洁:)我仍然有一个关于ValueAwareEditor的问题:你应该映射setValue()中的所有值,还是只映射那些没有被编辑器处理的值?只映射那些没有被编辑器处理的值。否则,您将成为
LeafValueEditor