检查 Vaadin 中是否存在会话变量

Checking if a session variable exists in Vaadin

VaadinSession.getCurrent().getAttribute("name")
&
VaadinSession.getCurrent().setAttribute("name", "actual nameson")

getSession().getAttribute("name", username);
&
getSession().setAttribute("name", username);

这些是使用 Vaadin 会话管理的正确方法吗? 我找不到有关在 Vaadin 中获取和设置会话的可理解文档。

我目前的问题: 如果我尝试获取一个会话变量,我得到一个 nullpointerException,我试图吞下它并继续,但这会使 Vaadin 内爆。

是否有安全的方法来检查是否设置了 Vaadin 会话(和特定变量)?

我必须先初始化会话才能使用变量吗?

更具体地说,我想在将用户重定向到登录屏幕之前检查会话是否存在。如果用户未登录,检查将抛出 nullpointerException,因此未登录的用户无法加载 loginForm。

问题@How to get all sessions in Vaadin与我的问题无关

还有一件事

boolean isLoggedIn = getSession().getAttribute("user") != null;

不会使 Vaadin 内爆,所以我可能只是在做 Java Fail™

如有任何帮助,我们将不胜感激。

如果需要,您可以使用 VaadinService 直接访问 HTTP 会话。

HttpServletRequest request = (HttpServletRequest) VaadinService.getCurrentRequest();
request.getSession().setAttribute("name", "actual nameson");