Gwt PropertyAccess:为PropertyAccess中的标签定义条件值

Gwt PropertyAccess:为PropertyAccess中的标签定义条件值,gwt,gxt,Gwt,Gxt,我有一个名为Field的模型,它有id和标签 我在下面定义了PropertyAccess,它可以正常工作。我想更改它,以便根据条件显示标签,即如果field.getLabel()为null,则使用field.getId()作为标签。我怎么能做到呢 interface FieldProperties extends PropertyAccess<Field> { ModelKeyProvider<Field> id(); LabelProvider<Fiel

我有一个名为Field的模型,它有id和标签

我在下面定义了PropertyAccess,它可以正常工作。我想更改它,以便根据条件显示标签,即如果field.getLabel()为null,则使用field.getId()作为标签。我怎么能做到呢

interface FieldProperties extends PropertyAccess<Field> {
  ModelKeyProvider<Field> id();

  LabelProvider<Field> label();

  @Path("label")
  ValueProvider<Field, String> labelProp(); 
}
接口字段属性扩展PropertyAccess{
ModelKeyProvider id();
LabelProvider标签();
@路径(“标签”)
ValueProvider labelProp();
}

感谢PropertyAccess工具旨在使快速构建
ValueProvider
ModelKeyProvider
LabelProvider
实例变得容易,这些实例基于类bean对象上的特定getter/setter。如果您不想只访问单个属性,那么直接实现接口

在您的情况下,因为您需要一个
LabelProvider
,它返回getLabel(),除非它为null,然后
getId()
,您可以这样做:

public LabelOrIdLabelProvider implements LabelProvider<Field> {
    @Override
    public String getLabel(Object item) {
        return item.getLabel() == null ? item.getId() : item.getLabel();
    }
}
公共LabelOrIdLabelProvider实现LabelProvider{
@凌驾
公共字符串getLabel(对象项){
return item.getLabel()==null?item.getId():item.getLabel();
}
}
如果您想要定制行为,请自行构建,以完全满足您的需要。如果您只需要读取单个getter的简单行为,
PropertyAccess
可以帮助您节省几行代码