GWT UiHandler for g:Anchor没有开火

tkl*_*ves 6 gwt

我基本上有一个菜单,您无法单击标题,但当您将鼠标悬停在菜单项上时,您可以从下拉元素中进行选择.每个元素都是g:具有与之关联的ui字段的锚标记.我期望发生的是,当用户点击其中一个下拉元素时,该字段的uiHandler将会触发.即使有调试和断点,它也不会发生.

您将在下面找到代码中主要关注的区域.我只会在这里发布我的gwt导入,因为可以假设其余的都是正确的,因为零错误.

这是一个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'
             xmlns:cpcw='urn:import:org.collegeboard.pa.gwt.client.widget'>
    <cpcw:ExtendedHTMLPanel>
        <ul>
            <li ui:field="juniorHigh"><g:Anchor href="">Junior High</g:Anchor>
            <ul>
                <li><g:Anchor href="#" ui:field="juniorHighFall">Fall</g:Anchor></li>
                <li><g:Anchor href="#" ui:field="juniorHighSpring">Spring</g:Anchor></li>
                <li><g:Anchor href="#" ui:field="juniorHighSummer">Summer</g:Anchor></li>
            </ul>
        </li>
    </ul>
    </cpcw:ExtendedHTMLPanel>
</ui:UiBinder>
Run Code Online (Sandbox Code Playgroud)

然后是我的Java类中的部分

进口

import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.LIElement;
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.ui.Anchor;
Run Code Online (Sandbox Code Playgroud)

Ui Fields

@UiField
protected LIElement juniorHigh;

@UiField
protected Anchor juniorHighFall;

@UiField
protected Anchor juniorHighSpring;

@UiField
protected Anchor juniorHighSummer;
Run Code Online (Sandbox Code Playgroud)

Ui Handler

@UiHandler({"juniorHighFall","juniorHighSpring","juniorHighSummer"})
public void handleMenuClick(ClickEvent event)
{
    DisplayUtil.displayAlertMessage(event.toString());
}
Run Code Online (Sandbox Code Playgroud)

初始化

@Override
public void initializeBinder()
{
    initWidget(ourUiBinder.createAndBindUi(this));
}
Run Code Online (Sandbox Code Playgroud)

现在,UiHandler实际上从未被击中.我有使用和没有href的g:Anchor标签,并且还尝试了它们作为g:超链接和g:按钮没有成功.就好像UiHandler不在那里.

任何帮助将不胜感激,如果您觉得您需要其他任何疑难解答,请告诉我!

谢谢 :-)

编辑:

为了确保这一点很明确,包含此ui.xml文件的模板ui.xml文件将其放在div中.当我用SimplePanel替换它时,一切都与UiHandler一起使用.

谢谢你的回复!

fil*_*fku 6

默认情况下,这样做并且应该正常工作.

我发觉到:

  • 您的代码引用了"ourUiBinder"
  • 您的控件包含在"ExtendedHTMLPanel"中

这些似乎是自定义类 - 在这些实现中可能会出现一些时髦的东西?

也许你可以尝试在SimplePanel中包装这些锚点并使用默认的UiBinder,看看是否有效.如果是这样,很可能与您使用的任何自定义控件有关.如果没有,则会发生一些奇怪的事情 - 也许重新启动IDE等.