我有一个简单的用例:在多选Table
这是我使用的代码:
contactList.setMultiSelect(true);
final Action delete = new Action("Delete", FontAwesome.TIMES);
final Action download = new Action("Download", FontAwesome.DOWNLOAD);
contactList.addActionHandler(new Action.Handler() {
@Override
public Action[] getActions(Object target, Object sender) {
final Table table = (Table)sender;
// if Table is in multi select mode, getValues() returns Set of item id's
if (table.isMultiSelect() && ((Set)table.getValue()).size() > 1) {
return new Action[] {delete};
} else {
return new Action[] {delete, download};
}
}
...
每次进行行选择时,我都会看到getActions()
组件调用Table
。它返回正确的Action
数组。但是,在UI中,仅使用一个上下文菜单,与返回的操作无关。
The Book of Vaadin 中未涉及此主题。有一个old question但解决方案太复杂了,Joonas建议的解决方案不起作用(事实上我在这里描述的情况)。