2013-04-04 90 views
3

我現在遷移的applicaition從GXT 2至GXT 3.將GXT 2.x遷移到GXT 3.x.如何處理模型?

之一兩者之間的主要區別是,GXT 3.x的允許的POJO在窗口小部件可以使用,而GXT 2.x的小部件需要的對象,其實現ModelData。

問題是我不能簡單地拋棄所有的ModelData對象並使用POJO,因爲ModelData對象包含很多附加屬性,這些屬性只與GUI相關。
因此,這些屬性不能放置到POJO(真正的應用程序模型)。

最有可能的是,我最終會構建我自己的ModelData接口和一組對象以用於小部件。這看起來有點醜陋,並且沒有GXT3風格。

是否有任何其他方法用於解決這樣的問題?或者,也許有人已經面對它?任何意見是高度讚賞。

+0

你讀過'http:// www.sencha.com/learn/sencha-gxt-2x-to-300-migration-guide /'嗎?有一個關於'ModelData'的部分。 – 2013-04-04 23:03:54

+0

是的,我做到了。 該部分說我應該使用LabelProvider和KeyProvider來訪問我的bean中的屬性。 但是我也用來訪問過濾器中的一些GUI特定的屬性,例如。所以,在這些地方使用LabelProvider似乎不是一個好主意。 – Andrew 2013-04-05 07:14:46

+1

也許一個簡單的轉換器(適配器)方法?在我的項目中,我們經常執行客戶端映射。拖累,但有時它比替代方案更好,這是一個重大的重構。 – 2013-04-06 16:19:06

回答

0

與Chris Phillipson的建議類似,您可以使用客戶端變體對您的POJO進行子類化,從而添加其他字段,例如有一個名爲MyPojo類:

class MyPojo { 
    private String name; 
    private String address; 
    ... 
} 

在客戶端,你有子類:

class MyClientPojo extends MyPojo { 
    private String additionalInfo; 
    ... 
} 
0

我的建議是建立一個YourModelData類自己的一個包裝YourModel類,並添加額外的屬性你可能需要顯示(我建議不要爲此目的進行子類化,因爲ModelData 否YourModel,它只有之一)。沒有什麼能夠阻止你使用ModelData,但你不再需要。