我正在开发一个项目,在点击链接时将替换用户会话。由于页眉,页脚和内容(即整个页面)中的所有数据都取决于会话数据,因此必须重新加载整个页面(所有子页面)。我已经尝试过bookmarkablepagelink,但我无法在此链接上添加操作(更改会话)。我还尝试创建一个更改会话的链接,然后以编程方式单击bookmarkablepagelink,但我找不到一种方法来单击链接而不使用javascript(这在此项目中无可替代)。
有什么好的建议怎么做?
答案 0 :(得分:5)
在链接的onClick
方法中,重置会话,然后
setResponsePage(getPage());
并且页面应该很好地刷新。
答案 1 :(得分:5)
您的问题的解决方案有两个:您替换会话,可能最好通过
完成getSession().invalidateNow();
并将重定向发送到可收藏的网址。这也可以通过setResponsePage
来完成:
setResponsePage(OtherPage.class, new PageParameters().add("foo", "bar"));
这将向浏览器发送302重定向,其中包含可收藏的URL和提供的参数,使servlet容器有足够的机会重置会话(基本上注销用户),同时等待浏览器响应。它还会触发一个新的会话cookie(因为前一个会话不再处于活动状态)。