CrudBeanItemContainer に基づく vaadin テーブルがあります。
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 は、値のタイプを格納します: 整数、日付、文字列、ブールなど。
テーブルに MyBeans をリストしています。ユーザーがテーブルの値を編集できるようにしたい。そのためには、Value列にフィールドを追加する必要があります。VariableType に応じて、DateField、CheckBox などにすることができます。
私はこれを試しました:
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 ですが、テーブルにフィールドが表示されません。
MyBean内のVariableTypeにフィールドを追加するにはどうすればよいですか?