4

我正在开发一个项目,单击链接时将替换用户会话。由于页眉、页脚和内容(即整个页面)中的所有数据都依赖于会话数据,因此必须重新加载整个页面(所有子页面)。我尝试了 bookmarkablepagelink,但我无法在此链接上执行操作(更改会话)。我还尝试创建一个更改会话的链接,然后以编程方式单击书签页面链接,但我找不到不使用 javascript 来单击链接的方法(这在这个项目中是没有选择的)。

任何好的建议如何做到这一点?

4

2 回答 2

5

onClick链接的方法中,进行会话重置,然后

setResponsePage(getPage());

并且页面应该很好地刷新。

于 2012-10-08T11:44:03.230 回答
5

您的问题的解决方案是双重的:您替换会话,可能最好通过

getSession().invalidateNow();

并将重定向发送到可收藏的 URL。这也可以通过以下方式完成setResponsePage

setResponsePage(OtherPage.class, new PageParameters().add("foo", "bar"));

这将向浏览器发送一个 302 重定向,其中包含可添加书签的 URL 和提供的参数,让 servlet 容器有足够的机会在等待浏览器响应时重置会话(基本上是注销用户)。它还将触发一个新的会话 cookie(因为之前的会话不再活动)。

于 2012-10-08T11:58:43.203 回答