java - 使用延迟加载面板时,Wicket 无限重新加载页面

标签 java exception lazy-loading wicket infinite-loop

我有 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/

相关文章:

Angular <custom-component> 不适用于延迟加载的模块

java - Hadoop 中的 I/O 设置

Hibernate 以多对一的方式生成 m + 1 个查询

hibernate - 未能延迟初始化角色 : com. pojo.Student.phonenos 的集合,没有 session 或 session 已关闭

mysql - 打开连接时发生内部连接 fatal error

java - 如何调试在写入字符串时导致转换错误的 xml 对象?

php - 如何管理多个嵌套函数中的异常?

java - 无法将对象上传到 Firebase 实时数据库

java - java中的时间操纵/模拟和事件调度

java - Grails 将日期时间保存为 UTC 时间,但将其读取为本地服务器时间?