Vaadin 7.3中表格上下文菜单的行为不清楚

时间:2014-12-11 12:41:20

标签: vaadin vaadin7

我有一个简单的用例:在多选Table

  • 当用户选择1行时,必须返回包含两个操作的上下文菜单(DELETE和DOWNLOAD)
  • 当用户选择多行时,只有DELETE Action应该在上下文菜单中

这是我使用的代码:

    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建议的解决方案不起作用(事实上我在这里描述的情况)。

1 个答案:

答案 0 :(得分:0)

它是版本6中Vaadin的一个众所周知的问题。大多数人(包括我)通过使用ContextMenu Addon来解决这个问题