Java UiBinder错误地认为我没有addValueChangeHandler方法
我有一个类选择器,它扩展ListBox并实现HasValue(从而实现HasValueChangeHandler),然后我有: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
@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在超类上没有问题,不过…:-/很高兴你明白了。我想我从来没有遇到过这个问题。我会记住的