我正在尝试使用Wicket WebResource
动态地同时加载大量图像。问题是加载它们需要花费很多时间,在某些情况下需要花费一分多钟,然后我会收到以下错误:
org.apache.wicket.protocol.http.request.InvalidUrlException:org.apache.wicket.WicketRuntimeException:1分钟后,Pagemap null仍被锁定:Thread [http-8443-2,5,main],给出尝试获取路径页面:6:documentList:scroller:batchElem:11:content:item:7:cols:9:batchItemContent:linkToPreview:imageThumbnail
在org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:262)
在org.apache.wicket.RequestCycle.step(RequestCycle.java:1310)
在org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
在org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
有没有人知道动态加载图片的其他解决方案,以避免错误?
答案 0 :(得分:0)
您可以将每个图像放在AjaxLazyLoadPanel
中,然后为每个图像创建许多对服务器的简短请求。
答案 1 :(得分:0)
问题是加载它们需要花费很多时间,在某些情况下需要花费一分多钟
您当然应该尝试将负载花费不到一分钟,因此您不会获得页面映射锁定异常,因此您不会让用户等待。
超时可以增加(参见this question),但这不是最佳解决方案。
花了这么多时间?你在做复杂的动态图像渲染吗?你能展示代码吗?
您可能已经意识到这一点,但image examples可能有用。
答案 2 :(得分:0)
更好地使用Wicket共享资源来传递图像内容。 即就像是: 在MyApp#init()中安装资源 - mountSharedResource()用于1.4或mountResource()用于1.5。 然后将ContextImage与url一起使用,该url指向已安装的资源+动态参数以及图像名称/路径。 好处是Wicket共享资源不会同步为Wicket Pages。