我基本上有一个菜单,您无法单击标题,但当您将鼠标悬停在菜单项上时,您可以从下拉元素中进行选择。每个元素都是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>
然后是我的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;
Ui Fields
@UiField
protected LIElement juniorHigh;
@UiField
protected Anchor juniorHighFall;
@UiField
protected Anchor juniorHighSpring;
@UiField
protected Anchor juniorHighSummer;
Ui Handler
@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:超链接和g:按钮没有成功。好像UiHandler不在那里。
非常感谢任何帮助,如果您觉得还需要其他任何疑问,请告诉我们!
谢谢: - )
编辑:
为了确保这一点很明确,包含此ui.xml文件的模板ui.xml文件将其放在div中。当我用SimplePanel替换它时,一切都与UiHandler一起使用。
感谢您的回复!
答案 0 :(得分:6)
默认情况下,这样做并且应该正常工作。
我注意到了:
这些似乎是自定义类 - 在这些实现中可能会出现一些时髦的东西?
也许您可以尝试将这些锚点包装在SimplePanel中并使用默认的UiBinder,看看是否有效。如果是这样,很可能与您使用的任何自定义控件有关。如果没有,那么会发生一些奇怪的事情 - 也许重新启动IDE等。
答案 1 :(得分:2)
Template xml文件的每个视图都包含在div元素中。 Filip-fku建议我查看SimplePanels以获取我发布的代码,这让我看看模板文件,看看它们根本不是GWT容器,它们是div。一旦我将它们变成SimplePanels,我的UiHandlers就像一个魅力!
谢谢Filip-fku! g:SimplePanel FTW !!!