从Vaadin 14开始寻找新的UI

Bas*_*que 1 hook user-interface lifecycle vaadin vaadin-flow

Vaadin 14手册中的导航生命周期说:

也可以使用中的addBeforeEnterListener(BeforeEnterListener)方法为该事件注册一个独立的侦听器UI

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

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

调用UI.getCurrent不会做,因为我需要从布局中的某个地方调用它,但是我试图布局存在之前注册一个侦听器。

cfr*_*ick 7

要挂接到UI init,有一个UIInitListener

UIInitListener每当创建和初始化新的UI时,A 可用于接收事件。

添加UIInitListeners的理想位置是在 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()));
        }
    };
}

Run Code Online (Sandbox Code Playgroud)