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



只是一个关于Vaadin的问题,我搜索了很多,但没有找到有用的信息。

我需要知道当 UI 没有@PreserveOnRefresh注释集时是否已刷新(这意味着覆盖 UI.refresh(( 对我不起作用(。

基本上我有一个映射,它将用户会话 ID 映射到浏览器中打开的 UI,当检测到新 UI 时,我需要将其添加到当前会话的 UI 集合中。

如果用户在浏览器中请求相同的 UI(由 Servlet @WebServlet 配置映射的相同 UI 实现(,我需要添加此 UI,当且仅当它是在浏览器的另一个窗口或另一个选项卡中打开的 UI,并且不执行任何操作或更好地删除旧 UI 并在浏览器窗口刷新时放置新 UI。

我知道如果我向 UI 添加@PreservOnRefresh注释,这将起作用(但我再次需要 UI 不可保留(。

那么我该如何才能真正做到这一点呢?我发现这个实现(对我来说似乎有点丑(-> http://dev.vaadin.com/ticket/12191#trac-change-5-1374239207261117

有没有其他可能的方法可以做到这一点?

感谢您的关注!

刷新

时会创建一个新的 UI,那么您可以在 UI 的 init 方法中将 UI 实例添加到地图中吗?

若要从映射中删除 UI,可以通过调用 UI.addDetachListener 方法添加分离侦听器。当 Vaadin 将 UI 与应用程序分离时,将调用此方法。

只需覆盖UI类中的refresh()方法即可。它适用于@PreserveOnRefresh,因此您不必重新初始化 UI 实例。

@Override
protected void refresh(VaadinRequest request) {
    super.refresh(request);
    // TODO do your thing here
}

最新更新