Java 如何启用/禁用编辑Vaadin网格中的特定列?

Java 如何启用/禁用编辑Vaadin网格中的特定列?,java,vaadin,Java,Vaadin,我有一个Vaadin网格(myGrid),其中我使用 myGrid.setEditorEnabled(true); 但是,我不允许编辑特定列中的单元格。我该怎么做?我能想到的唯一解决方法是拦截对模型bean的调用,并向用户抛出一些异常/显示消息。有更好的方法吗?使用: myGrid.setEditorEnabled(true) 不会自动使每个单元格都可编辑。您需要为每个可编辑列指定一个活页夹。如下列文件所述: 编辑器基于绑定器,用于将数据绑定到 编辑(…)对于每个应可编辑的列,应使用绑定 在编

我有一个Vaadin网格(myGrid),其中我使用

myGrid.setEditorEnabled(true);
但是,我不允许编辑特定列中的单元格。我该怎么做?我能想到的唯一解决方法是拦截对模型bean的调用,并向用户抛出一些异常/显示消息。有更好的方法吗?

使用:

myGrid.setEditorEnabled(true)

不会自动使每个单元格都可编辑。您需要为每个可编辑列指定一个
活页夹
。如下列文件所述:

编辑器基于绑定器,用于将数据绑定到 编辑(…)对于每个应可编辑的列,应使用绑定 在编辑器活页夹中创建,然后将列配置为 使用该绑定


因此,如果您想禁止在特定列中进行编辑,那么就不要为其提供活页夹。

看看我的解决方案

indexedContainer = new IndexedContainer();
indexedContainer.addContainerProperty("name",String.class,"");
//....
//in add item process do the following 
Item item = indexedContainer.getItem(indexedContainer.addItem());
item.getItemProperty("name").setValue(myModel.getName());
item.getItemProperty("name").setReadOnly(true);
//...
myGrid.setContainerDataSource(container);
就这样

我认为还有另一种方法,但我没有测试它

myGrid.getColumn("name").setEditable(false)

希望这对您有所帮助

我正在使用Vaadin 7。我认为活页夹是Vaadin 8的特色。但是,看起来我可以使用Vaadin 7中的编辑器字段。。。