首页 文章

GWT RPC 将对象从服务器端传递到客户端问题

提问于
浏览
2

我正在使用GWT-GAE并面临处理RPC 的错误问题无法在客户端的服务器端使用实体类

我检查了这个问题的第一个答案_1

但解决方案会导致其他错误,实施起来太难了

那么将服务器端类导入 Client Side 类是一个问题因为有一个人在上面的链接中说过他说:关于 GWT 有几点要记住:Server-side 类可以导入 client-side 类,但不是 vice-versa(通常)。 client-side 无法导入任何 Google App Engine 库(i.e.com.google.appengine.api.users.User)

是真的如果是这样如何克服这个问题我必须在客户端界面中使用服务器端类

提示:我正在使用 JDO 和 No-SQL 数据库(GAE 数据存储区)

提前致谢

2 回答

  • 3

    引用的含义是您通过 RPC 发送给客户端的任何代码都必须转换为 Javascript。因此,任何无法转换为 Javascript 的 Java 构造或库都无法在客户端上运行。在客户端中工作的任何代码都将(应该)在服务器上工作,因为它仍然只是 Java,并且在服务器中运行的代码不需要在 Javascript 中转换为其等效,因此该限制不适用。

    至于帮助您解决特定问题,我们需要一些有关您遇到的任何问题的更具体信息。通常,您希望通过 RPC 向下发送的是一个对象,它只是将您的模型数据传输到可以使用数据的客户端。当您的模型使用无法转换为 Javascript 的服务器中的代码时尤其如此。

    换句话说,如果您的实体类使用某些特定于服务器的代码,您需要将该代码保留在服务器中,并且只将数据发送到您的客户端,以及您需要的任何鳕鱼,但这确实可以被送到客户端。这是 GWT RPC 和较新的RequestFactory之间的一个很好的区别,如果你面临的问题,这可能是你需要的。

  • 0

    使用http://code.google.com/p/objectify-appengine/,您可以将实体类放入<source path='client'/>或<source path='shared'/>(e.g. server-side,您可以从数据库加载库存并将其“按原样”发送给客户端;然后在客户端上,您可以修改库存或创建新的一个并将其发送到服务器)。

相关问题