問題很簡單,但可能無法解決? ATLEAST我:/GWT:多個腳本實例通信
現狀: 比方說,我有一個動態的頁面系統,其中服務器提供了包含GWT模塊自我的其他副本。這意味着客戶端的主GWT實例應該管理新的傳入GWT腳本,這些腳本僅由主實例本身使用標記添加。 現在,主GWT實例需要以最簡單(內部GWT)方式與新創建的腳本實例進行通信。
那麼,什麼是不可能的問題:如果不是絕對需要,雙方都可以寫出愚蠢的JSNI包裝器。
Soltuions我想出了: 做一個模塊都使用,包括一個通用的接口,例如:
package com.whatever.interfaces;
public interface Communication {
void showMessage(String message);
}
所以,無論是現在還是將繼承這個模塊,知道的定義。 主要客戶端現在將加載動態JS並註冊通信的實現,動態的會去使用它。我試圖在$ wnd和使用setPropertyObject的元素上存儲引用。在$ wnd他們是空的,這可能/可能與GWT Iframing有關?例如,對於RootPanel元素上的屬性,會引發ClassCastException。
有沒有什麼好的方法來解決這個問題?我的另一個想法是使用JSNI作爲橋接模塊上的實現調用接口,但我不確定這是否是一種好方法。
您的幫助表示感謝,謝謝。
編輯: 好吧,我已經非常認爲這是不可能的。 儘管您可能在某處使用了相同的接口,但即使將相同的模塊用作通用接口,它們也會自行實例化,以便編譯不同的模塊。 使用JSNI的方法當然有些可能,但不是沒有將所有屬性映射到真正的JS對象並將其重新映射回來。這意味着你無法傳遞複雜的Java對象,就像你可能習慣的那樣。我的結論是,使用CodeGenerator可以自動構建JSNI包裝器,併爲這兩個模塊構建重新映射器,但這對我來說太麻煩了。
我仍然敞開,如果有人想出了一個更好的主意,但我只是想提供我發現一些內幕,以便其他人可以受益的我浪費的時間;)
我喜歡這個項目。很好找bsorrentino! – xsee