Vaadin Listener 服务器端与 Element-API,首选用例是什么?

Mat*_*ias 1 vaadin vaadin14

要向按钮添加点击侦听器(据我所知),Vaadin 有两种方法:

1. button.addClickListener(clickEvent -> ...);
2. button.getElement().addEventListener("click", event -> ...);
Run Code Online (Sandbox Code Playgroud)

第一个使用大量 Vaadin 代码来注册一个新的侦听器,返回一个 Registration 对象,并具有一个带有许多便利功能(获取点击坐标等)的 ClickEvent 对象。

第二个将点击事件直接注册到元素并返回一个 DomListenerRegistration 对象(与 Registration 相比,它看起来很混乱)。据我了解,这个解决方案更灵活(您可以使用所有浏览器事件,您可以选择除了“事件被触发”之外还要提取哪些信息)并且更时尚。如果我在任何一点上错了,请纠正我。

那么这两种变体的典型用例是什么?它们有什么优点或缺点?

以我的拙见,只要便利功能 (1.) 具有我需要的所有功能,我就会选择它,并且仅在我需要更多灵活性或想要获得最大性能时才使用第二个版本。

Tat*_*und 5

如果你有普通的 Vaadin Button,那么你真的应该使用这个

button.addClickListener(clickEvent -> ...);
Run Code Online (Sandbox Code Playgroud)

向按钮添加点击监听器。

Element API 是低级 API,您希望在实现自己的自定义组件并需要侦听客户端事件(尤其是自定义事件等)的情况下使用它。