页面重新加载后显示 Vaadin 通知

问题描述 投票:0回答:1

在 Vaadin 中,我想在页面重新加载后显示通知:

UI.getCurrent().getPage().reload();
new Notification("Success", 5000).open();

但是通过此尝试,不会显示任何通知。 这里有什么问题以及如何解决它?

java vaadin
1个回答
0
投票

虽然显示通知看起来非常必要,但这仍然是一部分 UI 的状态;所以当你重新加载时,你基本上是在(重新)创建一个新的 状态,其中通知不属于其中。

您必须向“新”用户界面发出信号,表明您想要完成某些操作。

实现此目的的一种方法是在会话中存储一个标记(其中所有 UI 都在会话中) 部分)。然后在组件上使用观察者(或整个组件的侦听器) 应用程序),以便在导航完成时解决通知。

例如

@Route(value = "", layout = MainLayout)
@SuppressWarnings('unused')
class MainView extends Composite<Div> implements AfterNavigationObserver {

    public static final String RELOADED_KEY = 'reloaded'

    MainView() {
        content.add(
                new Button("Reload and notify", {
                    getUI().get().tap {
                        getSession().setAttribute(RELOADED_KEY, true)
                        getPage().reload()
                    }
                })
        )
    }

    @Override
    void afterNavigation(AfterNavigationEvent afterNavigationEvent) {
        def session = getUI().get().getSession()
        if (session.getAttribute(RELOADED_KEY)) {
            session.setAttribute(RELOADED_KEY, false)
            Notification.show('Reloaded...')
        }
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.