我正在开发一个项目,单击链接时将替换用户会话。由于页眉、页脚和内容(即整个页面)中的所有数据都依赖于会话数据,因此必须重新加载整个页面(所有子页面)。我尝试了 bookmarkablepagelink,但我无法在此链接上执行操作(更改会话)。我还尝试创建一个更改会话的链接,然后以编程方式单击书签页面链接,但我找不到不使用 javascript 来单击链接的方法(这在这个项目中是没有选择的)。
任何好的建议如何做到这一点?
在onClick
链接的方法中,进行会话重置,然后
setResponsePage(getPage());
并且页面应该很好地刷新。
您的问题的解决方案是双重的:您替换会话,可能最好通过
getSession().invalidateNow();
并将重定向发送到可收藏的 URL。这也可以通过以下方式完成setResponsePage
:
setResponsePage(OtherPage.class, new PageParameters().add("foo", "bar"));
这将向浏览器发送一个 302 重定向,其中包含可添加书签的 URL 和提供的参数,让 servlet 容器有足够的机会在等待浏览器响应时重置会话(基本上是注销用户)。它还将触发一个新的会话 cookie(因为之前的会话不再活动)。