有时在关闭 ModalWindow 时会弹出消息“你想离开还是留下……”。我无法确定原因。例如,我关闭窗口 10 倍(仍然以相同的方式),其中一些尝试以失败告终。可以,但是父页面重新构建,数据全部丢失,不友好。
我的项目规范:
- 检票口:6.21.0
- 爪哇:8
- 春天:4.1.1.RELEASE
- 和其他(我希望不是相关的依赖项)
到目前为止,我所做、尝试或探索的事情:
- 当模态窗口关闭并发生错误时,再次构造父页面
- 发生错误时,不调用关闭回调
- modalWindow.showUnloadConfirmation(false) - 不起作用。确认窗口不显示,但是当窗口关闭时,父页面被重新加载并且数据消失了
- 将检票口更新到最新的 6.24 版本或 Spring 4.1.6 无济于事
- 降级到 wicket 6.1.9 没有帮助
- 升级到 wicket 7.4 没有帮助
- 当错误未发生时,模态窗口页面例如由 http 8443 exec 5 线程生成,并且回调被同一线程捕获
- 发生错误时,模态窗口页面例如由 http 8443 exec 5线程生成,但是当失败并且新父页面由 http 8443 exec 9线程创建时
- 在调用 window.close() 清除和分离所有数据提供者之前添加关闭按钮也无济于事
- 当模态窗口失败时,javascript 中的 window.close() 方法是最后一件事,即被调用。之后没有代码被调用。之后可能会重定向到父页面(这就是您要离开此页面确认对话框的原因)。
- 以上所有内容都可以通过创建新的 Java 类来测试,该类扩展 ModalWindow 并覆盖受保护的方法 String getCloseJavacript(),该方法以 String 的形式返回关闭的 JavaScript 代码。
解决方案
问题是当父页面加载数据时,页面大小太大而无法存储到 Wicket 页面缓存内存中。因此,当模态窗口关闭时,应该加载保存的父页面,但它从未保存,因此生成了新的。Wicket 页面缓存的大小,可以在 WicketApplication 类中设置。更多信息请参见页面缓存部分的https://ci.apache.org/projects/wicket/guide/6.x/guide/versioningCaching.html。