2012-04-21 29 views
0

对于我的GWT项目,主要提供商,Postgres的和GWT

我初步构建一个列表和* KEY_PROVIDER *唯一标识列表我的记录。现在,我已经连接到Postgres数据库而不是列表,我想知道是否需要将数据库的对象传递给数据库,或者在使用数据库时完全删除它。

在先 -

// Make a provider, connect the List with the provider! 
final ListDataProvider<Contact> sortProvider = new ListDataProvider<Contact>(KEY_PROVIDER); 
sortProvider.setList(CONTACTS); 

NOW -

// Create a data provider. 
MyDataProvider sortProvider = new MyDataProvider(); 
sortProvider.addDataDisplay(table); 

我不知道它需要现在该怎么办呢?

我需要pass-

MyDataProvider sortProvider = new MyDataProvider(KEY_PROVIDER); 

呢?

什么应该是最佳实践?谢谢!

回答

1

那么ProvidesKey接口只用于客户端(GWT)来识别你的对象。这对于知道列表中的哪个对象被选中以及在CellTable/CellList中手动选择另一行很重要。

如果您未指定ProvidesKey实现,CellWidgets将使用您的DTO的equals函数来检查它们是否相等。如果对象本身发生更改,则可能会遇到问题。因此,指定ProvidesKey实施方案并不取决于您是使用ListDataProviderAsyncDataProvider还是使用自定义数据提供程序。

顺便说一句,在你的例子中MyDataProvider是什么?它是AsyncDataProvider的子类吗?

+0

MyDataProvider扩展了AsyncDataProvider并实现了AsyncCallBack – Prince 2012-04-23 05:21:23

+0

所以,我可以推断ProviderKey用于标识前端中唯一的行,并且与数据库如何处理后端记录无关,因此两者都应该是目前以尽可能最好的方式处理数据。 – Prince 2012-04-23 05:27:53

+0

是的,这是正确的。您可能使用PostgreSQL中的Long/sequence作为主键。我想你的DTO在客户端会有一个Long字段。您可以将该字段作为唯一标识符与''ProvideKey''一起使用。 – 2012-04-23 08:43:36