3

首先,

非常感谢 Craig 在下面提供的出色答案,我在搜索原始问题时发现它非常有用... 参考:GWT 简单 RPC 用例问题:包含代码

在此解决方案的基础上,如果我按照 Craig 的建议将我的可持久对象留在/shared文件夹中,如何克服(看似 GWT 的限制) ......并按照 GWT 教程的建议对其进行注释......

@PersistenceCapable
public class Employee {

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;

GWT 似乎无法在客户端处理/导入 com.google.appengine.datastore.key?

我见过一些丑陋的黑客......但没有什么优雅的。

欢迎任何建议,谢谢

4

4 回答 4

3

不幸的是,App Engine 的Key类(和其他类)与GWT兼容。这意味着您必须从数据存储中检索对象,然后将其转换为与 GWT 兼容的 POJO,以通过 GWT-RPC 发送到客户端。

我建议考虑使用 App Engine 的objectify框架。它不仅是一个更简单的数据存储接口,而且它使用的持久对象GWT 兼容的,因此您可以通过 GWT-RPC 将它们发送到您的客户端。

于 2010-10-07T21:43:43.317 回答
2

您可以通过添加这些额外的 jar 文件在 GWT 代码中使用 Key 类:

http://www.resmarksystems.com/code/

  • appengine-utils-client-1.0.jar
  • appengine-utils-server-1.0.jar

这基本上为 GWT 编译器提供了 Key 和其他 AppEngine 类的 GWT 友好版本。(如文本、Blob 和用户..)

要使用:

  • 在构建路径中的任何位置添加 appengine-utils-client-1.0.jar。
  • 将 appengine-utils-server-1.0.jar 放到您的 WEB-INF/lib 文件夹中。

在您的 GWT 模块中添加以下内容:

<inherits name="com.resmarksystems.AppEngineDataTypes"/>
于 2010-10-08T01:30:53.890 回答
0

我认为 Google 刚刚为这个用例发布了一个名为 requestfactory 的 GWT 库。 这是链接

于 2010-12-18T23:22:40.187 回答
0

如果您不需要 Key 对象,您的密钥可以是 Long 或 String,它们很容易序列化,因此可以与标准 GWT-RPC 一起使用。

数据存储密钥

于 2010-10-09T15:55:26.730 回答