3 возможных решения:
1. Грязный обходной путь :
Вместо getName()
вернуть getName()
+ некоторый уникальный идентификатор:
public String getValue(IrrigationGapDTO object) {
if (object.getProgramSelected()!=null)
return object.getProgramSelected().getName()+"_"+object.getUniqueIdentiufier();
else
return "";
}
, затем в FieldUpdater
вы можете разделить символ "_" и обработать дубликаты
2. Используйте уникальный идентификатор вместо getName()
:
Просто сгенерируйте / назначьте уникальный идентификатор вашим программам и используйте его вместо имени.
3. Используйте IrrigationProgramDTO
тип вместо String
:
Вместо String
вы можете использовать класс IrrigationProgramDTO
в определении столбца. Однако вам, вероятно, придется использовать определяемый пользователем объект SelectionCell, который принимает тип IrrigationProgramDTO
вместо String
в качестве типа данных.
Column<IrrigationGapDTO, IrrigationProgramDTO> categoryColumn = new Column<IrrigationGapDTO, IrrigationProgramDTO> (categoryCell) {
@Override
public IrrigationProgramDTO (IrrigationGapDTO object) {
if (object.getProgramSelected()!=null)
return object.getProgramSelected();
else
return null;
}
};
categoryColumn.setFieldUpdater(new FieldUpdater<IrrigationGapDTO, IrrigationProgramDTO>() {
public void update(int index, IrrigationGapDTO object, IrrigationProgramDTO value) {
object.setProgramSelected(program);
}
}