2012-08-31 17 views
1

假設我有一組項目需要在表格/列表中顯示。該集高度可變,因爲後臺作業和其他用戶訪問相同的數據。Wicket:鏈接在可變ListView/DataView中

現在生成的輸出必須包含觸發底層數據操作的鏈接。這些操作可能會從集合中刪除一個項目,但並不總是這樣做。

由於ListView的模型(我現在對DataView不太確定)是基於索引的,所以在這種情況下它肯定會失敗。當我點擊指向錯誤對象的鏈接時出現錯誤,因爲基礎列表的順序或大小已更改。

所以我需要的是鏈接,它們總是指它們應該操作的對象的自然ID。當鏈接呈現給用戶時,我希望呈現的鏈接始終引用相同的對象,而不管在呈現時使用的集合發生了什麼。

想到的最簡單的解決方案是使用只包含動作和id的無狀態鏈接,將用戶引導到另一個頁面。但是這有一個明顯的缺點,就是我放棄了組件系統首先提供的所有好處。

你會如何解決這個問題?

+0

你能告訴我們一些代碼嗎?當您將數據保留在列表模型中以及列表模型中的鏈接數據時,如果某些索引失敗,應該無關緊要。如果你只是在你的listitems模型中存儲一個索引並嘗試重新訪問這些數據,那麼這很重要,但這不僅僅是在wicket和/或java中都會遇到問題。 – Nicktar

回答

0

DataView是基於非索引的,請參閱IDataProvider#model(),這樣您就可以非常接近正確的答案。