java - Vaadin 流 : Difference between Component and Element

标签 java vaadin vaadin-flow

在 Vaadin Flow 中,除了组件之外,现在还有元素。

在 Element 的 javadoc 中说:

A Component is a higher level abstraction of an Element or a hierarchy of Elements.

这实际上意味着什么?在这个更高的层次上做了什么,什么时候使用元素,什么时候使用组件?

最佳答案

作为一个实际的例子,让我们考虑一下 HTML 标签 <input> .您可以创建服务器端 Element给你 <input> 的实例在浏览器中显示为 Element myElement = new Element("input") .

此外,假设您要配置元素的占位符文本,例如<input placeholder="Enter your name here"> .使用 Element API,这是 myElement.setAttribute("placeholder", "Enter your name here") .

作为最后一个示例,您还添加了一个将值更改事件转发到服务器的监听器。您还需要配置将浏览器事件的哪些部分发送到服务器并在监听器中访问该值:myElement.addEventListener("change", event -> System.out.println("New value: " + event.getEventData("element.value")).addEventData("element.value"); .

您可以用这种方式构建整个应用程序,但这并不方便。你想要一个知道标签名称是 input 的类无需每次都输入字符串。你想要一个 setPlaceholder方法而不是使用通用的 setAttribute并记住属性的名称。最后,您需要一种添加值更改监听器的方法,其中新值可作为 event.getValue() 使用。 .

这正是 Component 的位置进入画面。它可以让你创建一个 Input扩展 Component 的类并为这些特性提供了一个 Java API。在引擎盖下,Input组件将使用 Element API,但将其隐藏为 Input 用户的实现细节类(class)不必知道。

此外,一个组件也可以基于其他组件而不是直接使用Element .这通常是您创建组成组件的方式,例如应用程序中的 View 。

关于java - Vaadin 流 : Difference between Component and Element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51873503/

相关文章:

java - 更改 gson 中的默认枚举序列化和反序列化

java - 获取字符串数组android中的项目位置?

vaadin - 停止 Vaadin Flow 按钮的事件传播

java - 如果用户尚未经过身份验证,如何处理对 View 的访问?

vaadin - 在 Vaadin 中保留选项卡式信息

带有行索引的 Vaadin 流网格

java - 使用 printf 给出两位小数并进行输入

java - 如何在java中制作一个大数组

java - 有没有办法知道 Vaadin UI 不是 @PreservedOnRefresh 时是否已刷新(F5 重新加载)

spring-boot - Spring RequestMapping 返回自动生成的 vaadin html 页面