我在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("");
答案 0 :(得分:1)
我无法看到您的所有代码来确认这一点,但如果您使用getElement()向您的应用添加小部件,那么您通过gwt添加的任何事件都不会通过。幕后有特殊的事件逻辑GWT处理,可以在内存泄漏安全的环境中工作。
您应该使用您的父窗口小部件,或者ui.xml文件的根目录,而不是使用Document.appendChild()
。例如,HTLMPanel
。直接将新小部件添加到该小部件,然后小部件上的事件应该通过。
摘要
如果元素上有事件,请不要添加元素。改为添加小部件。当我遇到这个问题时,这就解决了这个问题。