2

最近看了很多 gwt 请求工厂的例子,但仍然找不到完整的图片:

GWT 请求工厂的最佳选择是 CRUD(创建/读取/更新/删除)。话说回来:

  1. 即使在“更新”情况下,我也不清楚谁负责触发 EntityProxyChange(事件)

我在某处(忘记在哪里)读到客户端请求工厂保留它“看到”的 EntityProxy 的本地缓存,并且,如果它“看到”一个新缓存,那么它会触发一个 EntityProxyChange(事件)

这是否意味着,如果我的“updatePerson()”方法返回一个(新更新的)PersonProxy,那么本地客户端请求工厂基础设施是否“看到”这个新更新的人(即,凭借其更新的 versionId)然后它会自动触发 EntityProxyChange (Event) 吗?

  1. 在“删除”的情况下,假设我在请求上下文中创建了一个名为“deletePerson()”的函数,我了解请求是如何到达服务器的,并且可以执行例如 SQL DELETE 来删除实体,但是,谁负责触发 EntityProxyChange (Event) w/WriteOperation=DELETE ?这些事件会在服务器端触发吗?客户端?

我已经查看了 listwidget 示例(http://code.google.com/p/listwidget),但是,在“itemlist”删除时,它有点“作弊”,只需对整个文件进行蛮力刷新列表(尽管我确实理解该细节不一定是列表小部件首先要说明的);我本来希望看到一个 EntityProxyChange (Event) 处理程序来侦听 WriteOperation.DELETE 事件,然后只从 ListDataProvider 中删除该实体。

ServiceLayer/ServiceLayerDecorator.isLive() 是否会影响这些?

4

1 回答 1

1

请参阅http://code.google.com/p/google-web-toolkit/wiki/RequestFactoryMovingParts#Flow

客户端不保留缓存(虽然在一年前的早期迭代中可能是这种情况,但在非里程碑版本中从未如此),服务器端负责“触发”事件(您将在 JSON 响应负载中看到它们)。

当上面引用的wiki页面说:

无法再检索的实体...

它真正的意思是isLive已经返回false, 和isLive的实现默认为get按 ID 执行 a 并检查非空结果。

于 2011-08-18T14:28:14.797 回答