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

时间:2016-06-20 14:01:44

标签: java session vaadin dangerous-request

NULL

VS

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

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

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

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

在使用变量之前,是否必须初始化会话?

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

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

还有一件事

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

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

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

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

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