繁体   English   中英

为什么在GWT开发模式下不能从服务器端访问在客户端创建的对象?

[英]Why an object, created in client side, is not accessible from server side in GWT development mode?

我正在开发模式下运行我的GWT应用程序。 在我的客户端代码(实现Entrypoint的类)中,我创建了一个对象,并将其分配给另一个类的静态变量(假设类A)。

现在,预期我可以通过他从客户端任何地方引用类A的静态变量来访问该对象,但不能从服务器端代码访问它。 谁能解释我为什么不能以与从客户端代码访问对象相同的方式访问对象,因为在开发模式下,客户端和服务器都在同一JVM上的同一会话范围内运行。

您的客户端代码和服务器即使在开发模式下也不会在一个JVM中运行。 如您所知,GWT客户端代码被编译为Javascript代码。 因此,更新某些静态字段最终被编译为更新Javascript对象的某些属性。 由于明显的原因,无法通过服务器端代码访问。

GWT中的Dev模式足够聪明,并且不允许混合使用Server和Client静态变量,以免在将编译版本部署到服务器后产生混淆。

您不能直接从服务器端类访问客户端类,反之亦然。

如果要在客户端和服务器之间共享某些内容,请使用共享包,但仍将其用于特定目的,例如常量,验证器,实用程序,DTO(数据传输对象)等。

不要在共享类中使用任何GWT UI特定的代码。 共享软件包也对服务器可见,并且自定义窗口小部件没有意义。

在此处阅读有关GWT MVP功能的信息

在此处阅读更多有关GWT建筑的观点


在共享程序包中创建对象以在客户端和服务器之间进行通信。

在客户端进行的任何更改都不会在服务器端反映出另一件事,无论该更改是否存储在共享类中。 您必须通过GWT RPC调用将值传递给服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM