java - Vaadin 锚点 - 捕获默认点击事件
问题描述
我是 Vaadin 框架的新手,我想知道是否有办法捕获 Anchor 的默认点击事件?(Vaadin14,仅限 Java - v11)
我知道我可以这样做:
Anchor download = new Anchor()
download.getElement().addEventListener("click", event -> doStuff())
但它似乎不是内置的默认点击侦听器,因为我能够添加带有 StreamResource 的锚点。然后,单击 Anchor 开始文件下载 - 无需添加任何其他侦听器。
回答这些问题中的任何一个都可以解决我的问题,我相信:
- 有没有办法捕捉这个锚点击事件?
- 有没有办法在代码中以编程方式触发它,例如 Button click() 方法?
- 如果它是@DomEvent,这是什么类型的@DomEvent?
解决方案
您实际上是将锚点用作链接还是按钮?如果是后者,您可以只使用 Button 并将其设置为链接。
回答您的问题:
- 你做的方式,
addEventListener("click", e ->
download.getElement().callFunction("click")
(同clickInClient
)- 我不认为这对你很重要。您只需要对事件做出反应,如果您需要一些数据,您可以使用
addEventData()
您也可以尝试Anchor
实现ClickNotifier
mixin 接口的子类,这将为您提供该addClickListener()
方法,然后您也可以ClickEvent
手动触发它,就像在按钮中所做的那样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");
}
}
推荐阅读
- pandas - 使用多索引更新单列时创建重复行
- php - PHP 文件中的 $_POST 数组显示空结果
- node.js - apollo-server-express CORS 问题
- grails - Grails sessionFactory 等效于 Domain.withNewSession 和 withTransaction
- java - Azure 连接无法连接证书错误
- jquery - 如何在没有 JS 的情况下使 instagram iframe 具有响应性?
- python - 从 Flask 生成(内联 CSS)HTML 模板不起作用
- terminal - 无法在终端中运行 utop
- r - 如何使用apply()根据R中不同列中的条件添加新列
- javascript - 导航栏元素不显示