Vaadin ComboBox 清除选择

Vaadin ComboBox clearing selection

我有一个 ComboBox 定义如下:

private final ComboBox classification = new ComboBox( "Class" );
classification.addItem("C");
classification.setItemCaption("C", "Company");
classification.addItem("S");
classification.setItemCaption("S", "Supplier");
classification.addItem("U");
classification.setItemCaption("U", "Customers");
classification.setRequired(true);
classification.setRequiredError("A user class must be chosen!");
classification.setFilteringMode(FilteringMode.CONTAINS);
classification.setTextInputAllowed(true);

每当我 select 下拉列表中的任何值时,它会立即清除我 select 的内容。我什至没有在 "ValueChange" 监听器中看到它。

奇怪的是,我从另一个完美运行的表格中复制了此表格,其中包含国家/地区下拉列表。我没有从下拉列表中选择无效值。知道发生了什么吗?

如果没有,知道我应该在调试器中的什么地方设置断点以查看它在 ComboBox 代码中被清除的位置吗?我试过一次,但有点迷失在细节中。

好的,我找到了我自己问题的答案。就我而言,我的问题是由我也绑定字段的包装器 bean 引起的。我的 bean 包装了两个 "sub-beans",如果你愿意的话,一个用于从 XML 输入,一个用于输出到 XML。 "input" 的应该填写表格(调用 "get" 方法),但是 "output" 的应该填写表格中的数据(调用 "set" 方法)。这显然不理想,但这是我坚持的 API。为了修复它,我只是确保所有包装器 "get" 方法首先检查 "input" bean,然后是 "output" bean。对于 "set" 方法,我只是确保设置了 "input" 和 "output" bean。就像我说的,不理想。

总结一下:如果您发现您的 ComboBox 值消失了,请确保您绑定的 bean 不会撤消 ComboBox 在相应 "setter" 和 "getter" 中设置的任何内容(在幕后) ,我相信它会设置它,然后再次获取它)。

希望这有助于其他人不要犯同样的错误。