![](/img/trans.png)
[英]How can I have 2 different code implementations for GWT whether you're on the client or on the server side
[英]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
不是共享代碼,因此您無法在客戶端上使用此代碼。 在這種情況下,您需要:
super-source
為同一個類提供兩個文件:一個用於客戶端,另一個用於服務器端。 super-source
在Overriding one package實現中與 http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml的 另一部分進行了解釋,它由GWT用於Java運行時仿真,並且例如,對於com.google.gwt.regexp
和com.google.gwt.safehtml
包,提供可在客戶端和服務器端運行的統一API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.