【发布时间】:2021-08-12 10:39:13
【问题描述】:
只有在复制页面之前对页面执行了某些 Ajax 操作时,Wicket 才会引发 StalePageException。
可以在此处找到示例 wicket 项目,以及重现异常的步骤。
https://github.com/rjngshn/java-wicket-testing/tree/main
有没有办法确保不抛出这个异常?
谢谢
拉贾尼
【问题讨论】:
-
您必须使您的页面无状态才能完全摆脱 Stale-Page 问题(即用户操作的页面状态不再是最新的)。无状态检票口组件有一个检票口扩展,包括 ajax 请求,但我不知道这是否仍然适用于当前检票口版本:mvnrepository.com/artifact/org.wicketstuff/…
-
WicketStuff Stateless 自 7.4.0 起已合并到 Apache Wicket
-
据我从 wicket 文档中了解到,无状态页面主要用于与用户会话无关的地方。尽管可以使测试示例中的页面无状态,但该选项在现实生活中是不可行的。我需要显示登录用户的项目列表。用户可以在提供选择标准后刷新此列表。然后,用户可以使用浏览器提供的“复制”选项复制此页面。如果用户导航到原始页面,则打开副本后,单击任何项目以编辑/查看详细信息。抛出 StalePageException。我希望这能澄清我的问题。
-
我还想提醒您,在提供的示例中,主页是无状态的。
-
已将最新代码提交到 git。它现在具有 AjaxRequestTarget.IListener 实现,以及“isStateless”的日志记录值,当我测试时,这对于 HomePage 是正确的。