我开始研究将GWT与UiBuilder结合使用。我对如何使用该@UiHandler(..)指令来制作GWT文档中记录的简单事件处理代码感到有些困惑:
@UiHandler(..)
@UiHandler("button") void handleClick(ClickEvent e) { Window.alert("Hello, AJAX"); }
在这种情况下,handleClick使用该方法。您如何知道每个GWT小部件可以使用哪些方法@UiHandler?对于某些人,您还可以创建一个doClose()方法。
handleClick
@UiHandler
doClose()
但是,例如,与a ListBox一起使用时,您可以将其用于什么目的呢?我在文档的哪里可以看到?
ListBox
传递给@UiHandler注释的参数是您要为其分配适当字段的名称*Handler。因此,在这种情况下,你都分配ClickHandler到一个Button button(实际上,我们只是知道这个字段的名称)。
*Handler
ClickHandler
Button button
至于它是如何工作的-这是GWT魔术的一部分:)我的猜测是,就像其他UiBinder相关代码一样(我认为Google IO上有一个演示文稿,展示了UiBinder生成的代码),在编译时编译器会找出问题所在。在这个例子中:我们有Button button,我们有一个@UiHandler具有注解的方法ClickEvent参数- >那 一定 意味着它是一个ClickHandler(注意,这个方法的名字 并不 此事)。因此,让我们在编译时(可能在构造函数中)添加一些代码,以将处理程序添加到按钮。如果您对更全面的答案感兴趣-请查看来源:D
ClickEvent
在GWT API参考中。在这种情况下,您可能正在寻找ListBox.addChangeHandler。但是您通常@UiHandler在那里找不到相关的代码- 那是因为它是多余的-您始终@UiHandler以相同的方式构造方法:
ChangeHandler
void onChange(ChangeEvent event)
ChangeEvent
@UiHandler("listBox")
void whateverName(ChangeEvent event) { // … }