GWT不带href的可点击链接(锚定)

GWT不带href的可点击链接(锚定),gwt,Gwt,我正在尝试在GWT中创建一个链接(锚定),可以单击,并且可以处理它的ClickEvent,同时该锚定不会重新加载页面。这基本上意味着不能设置href 在javascript中,这是这样做的: <a href="javascript:handleAnchorClick();">Link</a> 或与 <a href="#" onclick="return handleAnchorClick()">Link</a> 其中handleA

我正在尝试在GWT中创建一个链接(锚定),可以单击,并且可以处理它的
ClickEvent
,同时该锚定不会重新加载页面。这基本上意味着不能设置
href

在javascript中,这是这样做的:

<a href="javascript:handleAnchorClick();">Link</a> 

或与

<a href="#" onclick="return handleAnchorClick()">Link</a>  

其中
handleAnchorClick()
返回false


在GWT中实现这一点的最佳方法是什么?

使用tha,调用its并添加您想要的逻辑。这种锚不会重新加载页面。

在GWT use处理程序中不推荐使用侦听器

诸如此类:

Anchor a = new Anchor("hi");
a.addClickhandler(new ClickHandler() {
     @Override
     public void onClick(ClickEvent event) {
           Window.alert("hi");
     }

});

如您所述,使用href=“#”将重新加载页面

这是您可以在UIBinder中执行的操作:

    <g:Anchor ui:field="myScriptedAnchor" href="javascript:;">
        MyScriptedAnchorText
    </g:Anchor>

不要忘记添加一个样式来锚定,否则它的行为与普通html链接不同:

.anchor {
            text-decoration: underline;
            font-weight: bold;
            cursor: pointer;
            display: block;
        }

如果你设置了一个以
#
开头的href,页面将不会被重新加载,但是历史堆栈将被更改,你可以响应该事件。确切地说,历史堆栈已更改,我不想仅仅为了有一个可点击的链接而处理它。是的,这似乎是正确的方法。现在我只需要找到一种方法,在UiBinder中使用这个特定构造函数的锚。啊,很简单
@UiField(provided=true)
在字段上。ClickListener已经被删除了(我也有相同的。当api为2010年编写的答案更改时很难。AddClickhandler不起作用,它必须是“AddClickhandler”,还忘了右括号,此代码编译为:btnLogout.AddClickhandler(new ClickHandler()){@Override public void onClick(ClickEvent事件){Window.alert(“hi”);}};
.anchor {
            text-decoration: underline;
            font-weight: bold;
            cursor: pointer;
            display: block;
        }