簡體   English   中英

如何在GWT中檢查代碼是在服務器端還是客戶端執行?

[英]How to check whether code is executed on server or client side in GWT?

我有一個用於服務器端和客戶端的類。 如何在構造函數中檢查它是從客戶端還是從服務器類調用的?

我已經用臟方式完成了 - 只要嘗試GWT.create()方法拋出異常,如果它,運行服務器端代碼。 但是我怎么能避免這種情況呢?

    public PrintManager() {
    try {
        factory = GWT.create(MapConfigFactory.class);   //clientsiede factory creation
    } catch (Exception ex) {
        factory = AutoBeanFactorySource.create(MapConfigFactory.class); //serverside factory creator
    }
}

當代碼在客戶端上作為JavaScript運行時, com.google.gwt.core.client.GWT.isScript()返回true

當代碼在服務器JVM(共享代碼)上運行時, com.google.gwt.core.client.GWT.isClient()返回false

AutoBeanFactorySource不是共享代碼,因此您無法在客戶端上使用此代碼。 在這種情況下,您需要:

  • 使用依賴注入,以便可以在客戶端和服務器端以不同方式提供MapConfigFactory的實例
  • 使用super-source為同一個類提供兩個文件:一個用於客戶端,另一個用於服務器端。 super-sourceOverriding one package實現中與 http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml的 另一部分進行了解釋,它由GWT用於Java運行時仿真,並且例如,對於com.google.gwt.regexpcom.google.gwt.safehtml包,提供可在客戶端和服務器端運行的統一API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM