GWT @UiHandler 不工作
GWT @UiHandler dont work
我正在使用 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>
Java
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
public class HowToHelp extends Composite {
interface HowToHelpUiBinder extends UiBinder<Widget, HowToHelp> {
}
private static HowToHelpUiBinder uiBinder = GWT
.create(HowToHelpUiBinder.class);
@UiField
Button btn;
public HowToHelp() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiHandler("btn")
void handleClick(ClickEvent e) {
Window.alert("Hello, AJAX");
}
}
Window.alert("Hello, AJAX"); 永远不会被调用。我完全按照官方 GWT 上的要求做了:http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html
有一个复杂的项目有一些错误zip
从链接的 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());
}
}
问题是您将一个小部件添加到另一个小部件而没有实际执行其中的 add 部分 ;)。相反,您 将 uibinder-widget 的内容 附加到 RootPanel 小部件的内容。
相反,这样做(它是 shorter/simpler,不会有这个错误):
RootPanel.get().add(new TheHandlerTest("My Button"));
我正在使用 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>
Java
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
public class HowToHelp extends Composite {
interface HowToHelpUiBinder extends UiBinder<Widget, HowToHelp> {
}
private static HowToHelpUiBinder uiBinder = GWT
.create(HowToHelpUiBinder.class);
@UiField
Button btn;
public HowToHelp() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiHandler("btn")
void handleClick(ClickEvent e) {
Window.alert("Hello, AJAX");
}
}
Window.alert("Hello, AJAX"); 永远不会被调用。我完全按照官方 GWT 上的要求做了:http://www.gwtproject.org/doc/latest/DevGuideUiBinder.html
有一个复杂的项目有一些错误zip
从链接的 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());
}
}
问题是您将一个小部件添加到另一个小部件而没有实际执行其中的 add 部分 ;)。相反,您 将 uibinder-widget 的内容 附加到 RootPanel 小部件的内容。
相反,这样做(它是 shorter/simpler,不会有这个错误):
RootPanel.get().add(new TheHandlerTest("My Button"));