私は、編集可能なVaadinテーブルにチェックボックスの列があります。チェックボックスのテーブルの列をデータベースにバインドする方法は?
アイテムの状態がgetISACTIVE = 1
(ロングタイプ、データベースから取得)の場合、チェックボックスをオンにします。
一方、チェックボックスの値を変更すると、ISACTIVE
の条件を変更したい(setISACTIVE=1
がチェックされ、setISACTIVE=0
がチェックされていません)。
は今まで、私はチェックボックスが、まだチェックボックスが条件= 1
任意のアイデアは、私が何をすべきにもかかわらず、チェックされません地図しようとしましたか?
table.addGeneratedColumn("Is Active", new Table.ColumnGenerator() {
private static final long serialVersionUID = 1L;
@Override
public Object generateCell(final Table source, final Object itemId,
Object columnId) {
final CheckBox checkBox = new CheckBox("");
//ITERATE THROUGH DATABASE, THEN getPS_SECTION that is the ID Bean Property
for (int i = 0; i < list.size(); i++) {
PS_SECTION section = list.get(i);
Long sc = section.getPS_SECTION();
FillIt(sc,checkBox);
if (section.getISACTIVE() == 1L) {
value = true;
CheckIt(sc,value);
}
else if(section.getISACTIVE() == 0L){
value = false;
CheckIt(sc,value);
}
}
checkBox.addValueChangeListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
Boolean isTrue = checkBox.getValue();
if (isTrue){
isChecked = true;
Notification.show("Is activated");
//setISACTIVE = 1
}
else{
isChecked = false;
Notification.show("Is deactivated");
//setISACTIVE = 0
}
}
});
return checkBox;
}
});
table.setTableFieldFactory(new DefaultFieldFactory() {
public Field<?> createField(Container container, final Object itemId, Object propertyId, Component uiContext) {
if (CHECKBOX_COLUMN.equals(propertyId)) {
CheckBox field1 = new CheckBox();
field1.setImmediate(true);
}
return super.createField(container, itemId, propertyId, uiContext);
}
});
そしてここでメソッドFillIt()
とCheckIt()
:
private void CheckIt(Long id, Boolean value) {
CheckBox checkBox = itemIdToCheckbox.get(id);
checkBox.setValue(value);
}
private void FillIt(Long id, CheckBox checkBox) {
itemIdToCheckbox.put(id,checkBox);
}
//When itemIdToCheckBox is
protected Map<Long, CheckBox> itemIdToCheckbox = new LinkedHashMap<Long, CheckBox>();
代わりにvaadinsグリッドコンポーネントを使用することは可能でしょうか? 'BeanItemContainer'との組み合わせでは、チェックボックスを使ったユースケースは簡単です。 – JDC
@JDC残念ながら、私たちが使用しているvaadinのバージョンはグリッドをサポートしていないので、これは不可能です。ありがとう、結構です! – natso