挂钩从 Vaadin 14 开始的新 `UI`

Hook for a new `UI` starting in Vaadin 14

Vaadin 14 手册中的 Navigation Lifecycle 说:

It is also possible to register a standalone listener for this event using the addBeforeEnterListener(BeforeEnterListener) method in UI.

但是在具有路由功能的现代 Vaadin 中,我们不再应该编写 UI 子类。我的粗略理解是确实有一个UI对象自动帮我们实例化,然后路由自动替换掉那个UI对象里面的内容。所以 UI 对象的存在应该对我们使用 Vaadin Flow 的程序员来说是透明的。

➥ 那么什么是新 UI 实例的生命周期挂钩,以便我可以将用户身份验证检查编写为 BeforeEnterListener 以在我所有 @Route 视图中全局工作?

调用 UI.getCurrent 不会执行,因为我需要从我的布局中的某处调用它,但我正在尝试在 我的布局存在之前 注册一个侦听器.

要挂接到 UI init,有 UIInitListener.

A UIInitListener can be used to receive an event each time a new UI has been created and initialized.

The ideal place to add UIInitListeners would be inside a VaadinServiceInitListener

例如使用 Springboot:

@Bean
VaadinServiceInitListener vaadinServiceInitListener() {
    return new VaadinServiceInitListener() {
        @Override
        public void serviceInit(ServiceInitEvent serviceInitEvent) {
            serviceInitEvent.getSource().addUIInitListener( initEvent -> System.out.println("UI Init for " + initEvent.getUI()));
        }
    };
}