Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java UiBinder错误地认为我没有addValueChangeHandler方法_Java_Gwt_Uibinder - Fatal编程技术网

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

Java UiBinder错误地认为我没有addValueChangeHandler方法,java,gwt,uibinder,Java,Gwt,Uibinder,我有一个类选择器,它扩展ListBox并实现HasValue(从而实现HasValueChangeHandler),然后我有: @Override public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) { return addHandler(handler, ValueChangeEvent.getType()); } @覆盖 公共句柄注册addValueChangeHan

我有一个类选择器,它扩展ListBox并实现HasValue(从而实现HasValueChangeHandler),然后我有:

@Override
public HandlerRegistration addValueChangeHandler(ValueChangeHandler<T> handler) {
  return addHandler(handler, ValueChangeEvent.getType());
}
@覆盖
公共句柄注册addValueChangeHandler(ValueChangeHandler){
返回addHandler(handler,ValueChangeEvent.getType());
}
我有一个选择器的子类MessageListBox,它为某些特殊对象的选择器添加了一些额外的函数。然后在我的一个小部件中

@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ChangeEvent event) {
  ((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
@UiField MessageListBox filterColumnSelect;
...
@UiHandler(“filterColumnSelect”)
无效handleSelectColumn(ChangeEvent事件){
((按钮)add.setEnabled(filterColumnSelect.hasSelection());
}
这是可行的,但我想改为实际侦听ValueChangeEvent,因为代码中有些地方我会生成一个(虽然我已经找到了创建原始ChangeEvents的方法,但我不希望在这里这样做)。 所以,我把代码改成

@UiField MessageListBox<Column> filterColumnSelect;
...
@UiHandler("filterColumnSelect")
void handleSelectColumn(ValueChangeEvent<Column> event) {
  ((Button) add).setEnabled(filterColumnSelect.hasSelection());
}
@UiField MessageListBox filterColumnSelect;
...
@UiHandler(“filterColumnSelect”)
无效handleSelectColumn(ValueChangeEvent事件){
((按钮)add.setEnabled(filterColumnSelect.hasSelection());
}
但现在GWT无法使用以下工具进行编译: [错误]字段“filterColumnSelect”没有关联的“addValueChangeHandler”方法

嗯。。。是的,它从选择器继承,所有这些类都是公共的。有什么好处


另外,作为说明,我也查看了ValueListBox,但我需要它不支持的一些功能,所以已经过时了。

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

我在工作时也做了自己的
ValueListBox
替换,所以我现在没有代码。但是您是否能够执行
filterColumnSelect.addValueChangeHandler()
?如果这样做有效,您的
@UiHandler
也应该可以工作。是的,我可以手动添加处理程序,但@UiHandler无论如何都拒绝工作。我预感到,UiBinder在编译时使用的任何进程(源代码分析或反射,我不知道内部工作)都可能与超类方法不同。因此,我尝试在子类上添加一个重写方法,该子类只委托给超类。现在它起作用了。所以,至少我知道问题在哪里。。。。奇怪的是,ChangeHandler在超类上没有问题,不过…:-/很高兴你明白了。我想我从来没有遇到过这个问题。我会记住的