UiBinder错误地认为我没有addValueChangeHandler方法

时间:2013-09-08 00:55:24

标签: java gwt uibinder

我有一个类Selector< T>扩展ListBox并实现HasValue< T> (因此HasValueChangeHandlers< T>)然后我有:

@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
  return addHandler(handler, ValueChangeEvent.getType());
}

我有一个Selector子类,MessageListBox,它为某些特殊对象的Selectors添加了一些额外的函数。然后我在我的一个小工具中......

@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ChangeEvent event) {
  ((Button) add).setEnabled(filterColumnSelect.hasSelection());
}

这样可行,但是我想改变方法来实际听​​取ValueChangeEvent,因为代码中有一些地方可以生成一个(虽然我已经找到了如何创建原始的ChangeEvents,我宁愿不要这样做)。 那么,我将代码更改为...

@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ValueChangeEvent<Column> event) {
  ((Button) add).setEnabled(filterColumnSelect.hasSelection());
}

但是现在GWT无法编译: [错误]字段'filterColumnSelect'没有关联的'addValueChangeHandler'方法。

嗯...是的,它从Selector继承,所有这些类都是公开的。什么给了?

另外,作为一个注释,我也查看了ValueListBox,但是我需要它不支持的功能,所以就这样了。

1 个答案:

答案 0 :(得分:2)

这是a known bug。它已经修复,将在GWT 2.6中发布。