У меня есть таблица vaadin, поддерживаемая CrudBeanItemContainer:
CrudBeanItemContainer<MyBean> beanItemContainer = new CrudBeanItemContainer<MyBean>(
MyBean.class, getTableFields());
for (MyBean bean : beanCollection) {
beanItemContainer.addBean(bean);
}
table.setContainerDataSource(beanItemContainer);
MyBean имеет 3 поля:
public class ProcessInstanceVariable {
private String name;
private Object value;
private VariableType variableType;
...
}
VariableType хранит тип значения: Integer, Date, String, Boolean и т. д.
Я перечисляю MyBeans в таблице. Я хочу, чтобы пользователь мог редактировать значение в таблице. Для этого мне нужно добавить поле в столбец Value, это может быть DateField, CheckBox и т. д. в соответствии с VariableType.
Я пробовал это:
Collection<?> itemIds = getTable().getItemIds();
for (Object itemId : itemIds) {
Item item = getTable().getItem(itemId);
Property value = item.getItemProperty("value");
MyBean myBean = (MyBean) itemId;
Property property = getField(myBean);
boolean isRemoved = item.removeItemProperty("value");
boolean isAdded = item.addItemProperty("value", property);
}
Метод getField возвращает необходимое поле (CheckBox, DateField...). Хотя isRemoved и isAdded имеют значение true, я не вижу это поле в таблице.
Как я могу добавить поле w.r.t. VariableType внутри MyBean?