2

我正在使用GWT-GAE并遇到了处理RPC的一个糟糕问题 Can't use Entity Classes on the Server Side inside the Client

我检查了这个问题的第一个答案[这里]

但是该解决方案会导致其他错误并且实施起来太难了

将服务器端类导入客户端类的问题也是如此,因为在上面包含的链接中有一个人说,他说: 关于 GWT 有几件事要记住:服务器端类可以导入客户端类,但反之亦然(通常)。客户端无法导入任何 Google App Engine 库(即 com.google.appengine.api.users.User)

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

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

提前致谢

4

2 回答 2

3

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

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

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

于 2013-02-12T05:45:28.507 回答
0

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

于 2013-02-12T06:10:21.167 回答