Authentication 瓦丁14中的LoginForm与LoginOverlay

Authentication 瓦丁14中的LoginForm与LoginOverlay,authentication,widget,vaadin,vaadin-flow,Authentication,Widget,Vaadin,Vaadin Flow,Vaadin 14提供了以下两种实现: ➥ 有什么区别 ➥ 为什么我应该使用一个而不是另一个 每个项目的Javadoc描述都是相同的,没有任何差异的迹象。的component catalog页面显示了这两个方面的示例,但没有提到区别 我从的源代码中看到,LoginForm不仅仅是AbstractLogin。相比之下,LoginOverlay添加了更多的方法。有些只是装饰,如标题。但是有些更神秘,比如initEnsureDetachListener,以及使用UI.getCurrent检查非

Vaadin 14提供了以下两种实现:

➥ 有什么区别

➥ 为什么我应该使用一个而不是另一个

每个项目的Javadoc描述都是相同的,没有任何差异的迹象。的component catalog页面显示了这两个方面的示例,但没有提到区别


我从的源代码中看到,
LoginForm
不仅仅是
AbstractLogin
。相比之下,
LoginOverlay
添加了更多的方法。有些只是装饰,如标题。但是有些更神秘,比如
initEnsureDetachListener
,以及使用
UI.getCurrent
检查非法状态


我很好奇为什么
LoginOverlay
需要比
LoginForm
更多的方法。我不仅想在我的应用程序中提供登录功能,而且想了解更多关于使用登录小部件作为示例或模型制作自己的复合组件的信息。

摘自Github页面:

Vaadin登录包含两个组件:

是提供无痛登录体验的Web组件,是Vaadin组件的一部分组件显示覆盖层内部的

是一个Web组件,提供一个表单,要求用户登录到应用程序。

因此,如果您希望在覆盖图中显示登录表单,您应该使用
LoginOverlay
组件。就我个人而言,我将其视为
LoginForm
之上的包装器,您可以将其作为独立组件添加

编辑: 对于其他方法,如
close
setOpened
setDescription
setTitle
,添加这些方法是为了处理覆盖和其他属性,这些属性不在
LoginForm
元素中

(用于
LoginOverlay
的web组件)是
的包装,它在覆盖中打开一个登录表单,并为应用程序标题和说明添加一个品牌部分

LoginOverlay
是一个包装器(您可能认为它像一个装饰器模式),在现有的
LoginForm
之上添加了额外的功能


关于
initEnsureDetachListener
,这是一个私有方法,可以确保在组件关闭(分离)的情况下,它也会从UI中删除。(当调用
setOpened
时,会将其添加到其中) 而且

注意:如果不是手动添加,覆盖将自动从DOM附加或分离


创建了一个Github票证,并在官方文档中对其进行了详细说明:

那么在Vaadin中什么是“覆盖”?我什么时候/为什么要使用覆盖层?我不认为瓦丁强加了覆盖层常用的任何其他含义:位于其他元素之上。在这个特定的情况下,这个定义是最合适的:在网站中的代码>,覆盖是一个图形内容框,出现在页面的中间,模糊背景内容。< /代码>,当你想要一个LogNebug(这是登录覆盖内的内容)在每页/视图/组件的顶部时,你会使用它。(如第一个示例所示)请参阅今天对我的问题所做的编辑。我指出了
LoginForm
loginoverplay
initEnsureDetachListener
在源代码中的一些神秘区别,它是一个私有方法,用于确保一旦元素关闭,覆盖就从DOM中分离。添加的所有这些方法都是为了操作覆盖本身(像开和关)。