0

我有一个名为 Field 的模型,它有 id 和 label。

我已将 PropertyAcess 定义如下,它可以工作。我想改变它,使我可以根据条件显示标签,即如果 field.getLabel() 为空,则使用 field.getId() 作为标签。我怎样才能做到这一点

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

  LabelProvider<Field> label();

  @Path("label")
  ValueProvider<Field, String> labelProp(); 
}

谢谢

4

1 回答 1

0

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

在您的情况下,由于您想要 aLabelProvider返回 getLabel() 除非它为空,那么getId()您可能会执行以下操作:

public LabelOrIdLabelProvider implements LabelProvider<Field> {
    @Override
    public String getLabel(Object item) {
        return item.getLabel() == null ? item.getId() : item.getLabel();
    }
}

如果您想要自定义行为,请自行构建以完全满足您的需求。如果您只想要读取单个 getter 的简单行为,PropertyAccess那么可以帮助您节省几行代码。

于 2013-08-11T21:18:05.830 回答