Vaadin 锚点 - 捕获默认点击事件

Vaadin anchor - catch deafult click event

我是 Vaadin 框架的新手,我想知道是否有一种方法可以捕获 Anchor 的默认点击事件? (仅 Vaadin14,Java - v11)

我知道我能做到:

Anchor download = new Anchor()
download.getElement().addEventListener("click", event -> doStuff())

但它似乎不是默认的内置点击侦听器,因为我能够使用 StreamResource 添加锚点。 然后,单击锚开始文件下载 - 无需添加任何额外的侦听器。

我相信回答这些问题中的任何一个都会解决我的问题:

您实际上是将锚点用作 link 还是按钮?如果是后者,您可以只使用 Button 并将其设置为 link.


回答您的问题:

  1. 你的做法,addEventListener("click", e ->
  2. download.getElement().callFunction("click") (the same as clickInClient)
  3. 我认为这对你来说不重要。您只需要对事件做出反应,如果您需要一些数据,您可以 use addEventData()

您也可以尝试继承 Anchor 实现 ClickNotifier mixin interface which would provide you with the addClickListener() method, also you could then fire this ClickEvent manually, as is done in button's click()

public class ClickableAnchor extends Anchor implements ClickNotifier {
    public void click() {
        fireEvent(new ClickEvent<>(this, false, 0, 0, 0, 0, 0, 0, false, false,
                false, false));
    }

    public void clickInClient() {
        getElement().callJsFunction("click");
    }
}