刷新整个页面wicket

4
我正在处理一个项目,其中用户会话将在单击链接时被替换。由于头部、页脚和内容(即整个页面)中的所有数据都依赖于会话数据,因此必须重新加载整个页面(所有子页面)。我已经尝试使用可书签页面链接(bookmarkablepagelink),但无法在此链接上放置操作(更改会话)。我还尝试创建一个链接来更改会话,然后以编程方式单击可书签页面链接,但我找不到不使用 JavaScript 单击链接的方法(这在该项目中不是替代方案)。

有什么好建议吗?


1
欢迎来到Stack Overflow!我们鼓励您研究问题。如果您已经尝试过某些方法,请将其添加到问题中 - 如果没有,请先研究和尝试您的问题,然后再回来。 - user647772
2个回答

5
在链接的 onClick 方法中,执行会话重置,然后...
setResponsePage(getPage());

页面应该能够很好地刷新。


这并非必须的:Wicket 的默认行为是重新渲染当前页面,除非通过 setResponsePage(otherpage) 显式告知。 - Martijn Dashorst

5
你的问题有两个解决方案:你需要替换会话,最好通过以下方式实现:
getSession().invalidateNow();

并将重定向发送到可书签的URL。这也可以使用setResponsePage完成:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接