2011-10-13 51 views
14

檢票具有AbstractRepeaters的許多實現:ListView控件,數據視圖,GridView控件,環路,PropertyListView等的Apache Wicket的中繼器:概述

就個人而言,我覺得很難確定哪些觀點將是理想的哪個場景。我通常堅持DataView,但那只是因爲我習慣了它。也許GridView會更適合場景A,PropertyListView更適合B ...。

是否有人知道博客或任何教程,其中解釋了視圖的差異,或任何能解釋哪個視圖最適合其中的人用例?

回答

28

Wicket有許多額外的,微不足道的類,這是導致你的困惑。對於不同的場景,不同的組件更好,但對於不增加任何實際複雜度的罕見情況,有很多Wicket組件。

例如,RequiredTextField是一個完整的類,它等於:

TextField x = new TextField("text"); 
x.setRequired(true); 

我相信從那裏設置需要的是更爲複雜的一個老版本的莖,但它仍然存在引起一些混亂。

你的許多中繼器是相似的。 PropertyListView只是將模型包裝在CompoundPropertyModel中,使屬性表達式更容易(請參見下文)。但是,您可以輕鬆地自行進行此更改。

所以,這裏是我的簡單總結,因爲我一直無法找到了最新的博客文章如你所描述:

RepeatingView - 非常有用的,當你沒有一個列表或您正在添加不同類型的組件(因此不同的內部標記)。

ListView - 如果您有List並且您正在顯示所有內容,則會很有用。可悲的是,它不適用於其他排序的集合。

數據視圖 - 如果你是從數據庫加載有用。其他方法允許您輕鬆地對數據集進行排序,分頁和修改。

PropertyListView - 如果您只是通過屬性表達式顯示值,則很有用。讓你做的

item.add(new Label("name")); 

代替

item.add(new Label("name", new PropertyModel<String>(item.getModel(), "name"))) 

- 如果你想重複一個Integer的次數,而不是數據的一組列表非常有用。到ListView其模型目的是填充有整數從0length

GridView的一個List<Integer>這相當於 - 用於獲取單個列表(例如21串),並使用兩組標記的有用(內/外)以組的形式顯示該列表(例如7x3網格)。但是,它假定您的標記使用了某些檢票:id,這沒有很好的記錄。我認爲你最好用一對嵌套的RepeatingView組件來完成同樣的事情。

希望有幫助!

+0

謝謝,這確實有助於:-)。 –

+0

徹底的答案 - 謝謝! – Chaiavi

+0

另一個不錯的概述https://cwiki.apache.org/confluence/display/WICKET/Tables+and+Grids – DraggonZ