如何在Wicket中动态快速地加载图像?

时间:2011-04-20 09:10:57

标签: wicket

我正在尝试使用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)

有没有人知道动态加载图片的其他解决方案,以避免错误?

3 个答案:

答案 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。