2011-04-20 71 views
2

我試圖使用Wicket WebResource動態地同時加載大量圖像。問題是,它需要大量的時間來加載它們,並在某些情況下,花費超過一分鐘,然後我收到以下錯誤:如何在Wicket中動態快速加載圖像?

org.apache.wicket.protocol.http.request.InvalidUrlException: org.apache.wicket.WicketRuntimeException: After 1 minute the Pagemap null is still locked by: Thread[http-8443-2,5,main], giving up trying to get the page for path: 6:documentList:scroller:batchElem:11:content:item:7:cols:9:batchItemContent:linkToPreview:imageThumbnail
at org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:262)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1310)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)

有誰知道其他的解決方案,以動態地加載圖像,爲了避免錯誤?

+0

可能相關:http://stackoverflow.com/questions/5714229/wicket-image-component-not-found-on-page – Pops 2011-04-20 14:26:21

回答

0

您可以將每個圖像放在一個AjaxLazyLoadPanel中,然後每個圖像都會爲服務器創建很多短的請求。

0

The problem is that it takes a lot of time to load them, and in some cases it takes more than a minute

您當然應該嘗試讓負載花費不到一分鐘的時間,因此您不會得到頁面映射鎖異常,並且不會讓用戶等待。

可以延長超時時間(請參閱this question),但這不是最佳解決方案。

什麼花這麼多時間?你在做複雜的動態圖像渲染嗎?你能顯示代碼嗎?

您可能已經意識到了這一點,但有image examples可能有用。

0

更好地使用Wicket共享資源來傳送圖像內容。 也就是說例如:MyApp#init()中的 安裝資源 - mountSharedResource()爲1.4或mountResource()爲1.5。 然後使用ContextImage和指向掛載的資源+動態參數的圖像名稱/路徑的url。 好處是Wicket共享資源不會與Wicket Pages同步。