我有一个名为Field的模型,它有id和label。
我已经定义了PropertyAcess,如下所示。我想以这样的方式更改它,即我可以根据条件显示标签,即如果field.getLabel()为null,则使用field.getId()作为标签。我该如何实现
interface FieldProperties extends PropertyAccess<Field> {
ModelKeyProvider<Field> id();
LabelProvider<Field> label();
@Path("label")
ValueProvider<Field, String> labelProp();
}
由于
答案 0 :(得分:0)
PropertyAccess
工具旨在让您轻松快速构建基于bean上特定getter / setter的ValueProvider
,ModelKeyProvider
和LabelProvider
个实例像对象。如果您不希望只访问单个属性,请直接实现该接口。
在您的情况下,因为您希望LabelProvider
返回getLabel(),除非它为null,然后是getId()
,您可能会执行以下操作:
public LabelOrIdLabelProvider implements LabelProvider<Field> {
@Override
public String getLabel(Object item) {
return item.getLabel() == null ? item.getId() : item.getLabel();
}
}
如果您想要自定义行为,请自行构建以完成您所需的操作。如果您只是想要阅读单个getter的简单行为,PropertyAccess
可以帮助您节省几行代码。