我有一个用于服务器端和客户端的类。 如何在构造函数中检查它是从客户端还是服务器类调用的?
我已经用脏方式完成了 - 只要尝试GWT.create()方法抛出异常,如果是,运行服务器端代码。但是我怎么能避免这种情况呢?
public PrintManager() {
try {
factory = GWT.create(MapConfigFactory.class); //clientsiede factory creation
} catch (Exception ex) {
factory = AutoBeanFactorySource.create(MapConfigFactory.class); //serverside factory creator
}
}
答案 0 :(得分:19)
com.google.gwt.core.client.GWT.isScript()
返回true
。
com.google.gwt.core.client.GWT.isClient()
返回false
。
答案 1 :(得分:2)
AutoBeanFactorySource
不是共享代码,因此您无法在客户端上使用此代码。在这种情况下,您需要:
super-source
为同一个类提供两个文件:一个用于客户端,另一个用于服务器端。在{em>覆盖一个包实现与http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml的另一个部分中解释了super-source
,它被GWT用于Java运行时仿真,例如,{{1} }和com.google.gwt.regexp
包,用于提供可在客户端和服务器端运行的统一API。