gwt事件处理程序无法正常工作

时间:2014-06-13 19:19:35

标签: gwt handler uibinder

我在GWT中遇到了这个奇怪的事情

当我将uibinder设置为getBody()。addpend()事件未触发但是当我使用RootPanel.get()时它可以工作.add(new p1());作品。看起来它与将uibinder添加到页面的方式有关吗?

工作活动:: RootPanel.get().add(new p1()); not working:

Document.get().getBody().appendChild(new p1().getElement());` 

事件处理程序看起来:

not working event::  Document.get().getBody().appendChild(new p1().getElement());
not working event::  Document.get().getBody().appendChild(new p1().getElement());


@UiHandler ("bleh")
void handleClick(ClickEvent e)

if (lEntidad.getText().length()>1)

lEntidad.setText("");

1 个答案:

答案 0 :(得分:1)

我无法看到您的所有代码来确认这一点,但如果您使用getElement()向您的应用添加小部件,那么您通过gwt添加的任何事件都不会通过。幕后有特殊的事件逻辑GWT处理,可以在内存泄漏安全的环境中工作。

您应该使用您的父窗口小部件,或者ui.xml文件的根目录,而不是使用Document.appendChild()。例如,HTLMPanel。直接将新小部件添加到该小部件,然后小部件上的事件应该通过。

摘要

如果元素上有事件,请不要添加元素。改为添加小部件。当我遇到这个问题时,这就解决了这个问题。