g的GWT UiHandler:锚未触发

g的GWT UiHandler:锚未触发,gwt,Gwt,我基本上有一个菜单,您不能单击标题,但是当您将鼠标悬停在菜单项上时,您可以从下拉元素中选择。每个元素都是g:Anchor标记,带有与之关联的ui字段。我希望发生的是,当用户单击其中一个下拉元素时,该字段的uiHandler将启动。即使在调试打开和断点的情况下,它也不会命中 在下面,您将发现代码中的主要关注领域。我将只在这里发布我的gwt导入,因为由于没有错误,可以假设其余的都是正确的 下面是一个XML片段,以了解发生了什么 <!DOCTYPE ui:UiBinder SYSTEM "htt

我基本上有一个菜单,您不能单击标题,但是当您将鼠标悬停在菜单项上时,您可以从下拉元素中选择。每个元素都是g:Anchor标记,带有与之关联的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>
用户界面字段

@UiField
protected LIElement juniorHigh;

@UiField
protected Anchor juniorHighFall;

@UiField
protected Anchor juniorHighSpring;

@UiField
protected Anchor juniorHighSummer;
用户界面处理程序

@UiHandler({"juniorHighFall","juniorHighSpring","juniorHighSummer"})
public void handleMenuClick(ClickEvent event)
{
    DisplayUtil.displayAlertMessage(event.toString());
}
初始化

@Override
public void initializeBinder()
{
    initWidget(ourUiBinder.createAndBindUi(this));
}
现在,UiHandler从未真正被击中。我已经有了带有和不带href的g:Anchor标签,也尝试过将它们作为g:Hyperlink和g:Button使用,但都没有成功。就好像UiHandler根本不在那里

如果您需要任何帮助,我们将不胜感激。如果您觉得需要其他任何帮助进行故障排除,请告诉我

谢谢:-)

编辑:

为了确保这一点是清楚的,包含此ui.xml文件的模板ui.xml文件将其放在一个div中。当我用SimplePanel替换它时,所有操作都与UiHandler一起工作


谢谢你的回复

默认情况下,这确实有效,而且应该有效

我注意到:

  • 您的代码引用了“ourUiBinder”
  • 您的控件包装在“ExtendedHTMLPanel”中
这些看起来像是定制类——也许在这些实现中发生了一些奇怪的事情


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

模板xml文件的每个视图都包含在一个div元素中。Filip fku建议我查看我发布的代码的SimplePanel,这让我也去查看模板文件,看看它们根本不是GWT容器,它们是div。我一把它们做成简单的窗格,我的向导就很有魅力


谢谢菲利普fku!g:SimplePanel FTW

是的,它们是定制类,我将开始深入研究它们,看看它们是否有什么古怪的地方。谢谢你让我放心,代码应该是有效的,因为这让我非常恼火!我还将给SimplePanel一次机会,看看这是否奏效!谢谢你的回复!还有,我会支持这个,但我在这里还没有足够的声誉来这么做。。。(╯°□°)╯︵ ┻━┻SimplePanel成功了!在包含此ExtendedHTMLPanel的模板xml上,元素是div。我将div更改为SimplePanel,并且所有UIHandler都正常工作。我仍然没有足够的声誉来支持您的答案,但谢谢!)
@Override
public void initializeBinder()
{
    initWidget(ourUiBinder.createAndBindUi(this));
}