Java GWT@UiHandler不起作用

Java GWT@UiHandler不起作用,java,gwt,uibinder,Java,Gwt,Uibinder,我正在使用GWT UiBinder。。。但是我不能使用@UiHandler,因为它不起作用 xml <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui">

我正在使用GWT UiBinder。。。但是我不能使用@UiHandler,因为它不起作用

xml

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">

        <g:Button ui:field="btn" text="btn"></g:Button>

</ui:UiBinder>

爪哇

import com.google.gwt.core.client.gwt;
导入com.google.gwt.event.dom.client.ClickEvent;
导入com.google.gwt.uibinder.client.uibinder;
导入com.google.gwt.uibinder.client.UiField;
导入com.google.gwt.uibinder.client.UiHandler;
导入com.google.gwt.user.client.Window;
导入com.google.gwt.user.client.ui.Button;
导入com.google.gwt.user.client.ui.Composite;
导入com.google.gwt.user.client.ui.Widget;
公共类HowToHelp扩展了复合{
接口HowToHelpUiBinder扩展UiBinder{
}
私有静态HowToHelpUiBinder uiBinder=GWT
.create(howtohelopeuibinder.class);
@尤菲尔德
按钮btn;
公共HowToHelp(){
initWidget(uiBinder.createAndBindUi(this));
}
@UiHandler(“btn”)
无效手柄点击(点击事件e){
alert(“你好,AJAX”);
}
}
Window.alert(“你好,AJAX”)永远不会被调用。我做的正是官方GWT上传递的:


链接的邮政编码中有一个完整的项目有一些错误,问题中缺少代码:

package source.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;

public class UiHandlerTest implements EntryPoint {

    @Override
    public void onModuleLoad() {
        RootPanel.getBodyElement().appendChild(new TheHandlerTest("My Button").getElement());

    }

}
问题是,您正在将一个小部件添加到另一个小部件,而没有实际执行添加部分;)。相反,您将uibinder小部件的内容附加到RootPanel小部件的内容

相反,请这样做(它更短/更简单,并且不会出现此错误):


代码看起来不错。你确定这个项目没有问题吗?可能在刷新应用程序之前没有保存更改?你试过清理这个项目吗。?DevMode或浏览器控制台中是否存在任何错误/异常?第二个问题是,显示的代码不是问题所在。您会看到页面中的按钮,如果使用超级开发模式,sdm服务器会按预期启动吗?你用sdm重新编译了吗?没有错误,没有例外,只是不起作用。我使用的是super-dev,看到了“正常”按钮。如果您将应用程序构建为JavaScript并“正常”运行,而不使用SDM或DevMode,那该怎么办?我很困惑。你能上传你的整个项目吗?(例如,Dropbox上的zip存档)以便我们可以尝试重现问题。谢谢我的朋友,听到它真的很有意义-确保下次发布所有代码;)。
package source.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;

public class UiHandlerTest implements EntryPoint {

    @Override
    public void onModuleLoad() {
        RootPanel.getBodyElement().appendChild(new TheHandlerTest("My Button").getElement());

    }

}
RootPanel.get().add(new TheHandlerTest("My Button"));