我有 Wicket 页面,它仅在构造函数中创建 ListView。这些 ListView 项只是页面上存在的组件。
为了加载这些组件,我使用第三方库中的 AsynchronousUpdatePanel: https://gist.github.com/jonnywray/594468
我想使用异步面板,因为有些组件加载时间为 300 毫秒,但有些组件加载时间为 10 秒。
问题是,有时当我想刷新页面时,一些无限循环就会开始,页面会一遍又一遍地重新加载。显示惰性指示器,几毫秒后页面再次刷新它们。用户必须关闭此浏览器选项卡并重新启动。
当无限循环开始时,StalePageException会一次又一次地抛出,从而开始页面重新加载。然后,应用程序控制台充满了这些:
WARN RequestCycleExtra - ********************************
WARN RequestCycleExtra - Handling the following exception
org.apache.wicket.core.request.mapper.StalePageException: A request to page '[Page class = *.*Page, id = 1, render count = 2]' has been made with stale 'renderCount'. The page will be re-rendered.
WARN RequestCycleExtra - ********************************
我找不到,我做错了什么。正在加载的组件具有模型,该模型通过 AsynchronousUpdatePanel 在后台的 Callable 线程中加载,之后调用 onPostSuccess 方法,在该方法中,我用我的面板(组件)替换惰性指示器,面板现在已加载模型。
感谢您的回答。
最佳答案
您应该创建一个快速入门并在 Wicket 邮件列表上寻求帮助。如果不进行调试,很难找到问题的原因。
请注意,AsynchronousUpdatePanel/FutureUpdateBehavior 似乎违反了一些 Wicket 原则(例如 transient 不可序列化的“ future ”字段)。
此外,由于 Wicket 8 AjaxLazyLoadPanel 支持并行异步延迟加载,也许您想尝试一下。
关于java - 使用延迟加载面板时,Wicket 无限重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58317725/