2013-04-04 122 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,但你不再需要。