簡體   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