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

时间:2013-02-11 15:25:39

标签: java google-app-engine gwt

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

我检查了该问题的第一个答案 [here]

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

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

如果是这样,那么如何克服这个问题我必须在客户端接口中使用服务器端类

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

先谢谢

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

相关问题