我想标题说明了一切:
是否有某种标志允许我的GWT应用程序检查它当前是否在超级开发模式下运行(可能是GWT.isProdMode()
的某些内容?)
答案 0 :(得分:6)
如前所述,您可以使用superdevmode
属性。
这是一个现实生活中的例子:
创建一个包含一个方法的类,该方法告诉我们在SuperDevMode中不是:
public class SuperDevModeIndicator {
public boolean isSuperDevMode() {
return false;
}
}
扩展上一个类并重写一个方法,告诉我们 在SuperDevMode中:
public class SuperDevModeIndicatorTrue extends SuperDevModeIndicator {
@Override
public boolean isSuperDevMode() {
return true;
}
}
根据superdevmode
属性,只使用一个合适的类 - 使用延迟绑定 - 将其放在*.gwt.xml
中:
<!-- deferred binding for Super Dev Mode indicator -->
<replace-with class="com.adam.project.client.SuperDevModeIndicatorTrue">
<when-type-is class="com.adam.project.client.SuperDevModeIndicator"/>
<when-property-is name="superdevmode" value="on" />
</replace-with>
通过延迟绑定实例化SuperDevModeIndicator
类:
SuperDevModeIndicator superDevModeIndicator = GWT.create(SuperDevModeIndicator.class);
用它来检查你是否在SuperDevMode中:
superDevModeIndicator.isSuperDevMode();
瞧!
您可以在此找到有关Deferred binding的文档。
答案 1 :(得分:3)
有一个open issue关于拥有GWT.isProdMode()
等公共访问者。
同时,如果确实需要知道,那么您可以在superdevmode
或<replace-with>
中使用名为<generate-with>
的延迟绑定属性规则。
答案 2 :(得分:2)
也许有一种“官方”方式,但这应该有效:
Storage stockStore = Storage.getSessionStorageIfSupported();
if (stockStore != null)
{
boolean isSuperDevMode = stockStore.getItem("__gwtDevModeHook:" + GWT.getModuleName()) != null);
}
答案 3 :(得分:0)
您可以使用下面实施的 GWTHelper.isSuperDevMode()方法。
public final class GWTHelper {
public static boolean isSuperDevMode() {
final Storage storage = Storage.getSessionStorageIfSupported();
if (storage == null) {
return false;
}
final String devModeKey = "__gwtDevModeHook:" + GWT.getModuleName();
return storage.getItem(devModeKey) != null;
}
}
答案 4 :(得分:0)
检查开发者应用服务器: GWT.getHostPageBaseURL()返回http://127.0.0.1:8888/
服务器端:request.getRemoteHost() 应该返回相同的(虽然我没有对此进行测试)。
要检查超级开发模式(vs没有SDM的开发应用服务器): 如果GWT.getModuleBaseURL()&amp; GWT.getModuleBaseForStaticFiles()不同, 你是超级开发模式。
属性名称=&#34; superdevmode&#34;解决方案对我没用。
答案 5 :(得分:0)
我使用了以下方法:
private static native boolean isSuperDevMode()/*-{
return typeof $wnd.__gwt_sdm !== 'undefined';
}-*/;
适用于GWT 2.7.0。
答案 6 :(得分:0)
我的解决方案是:
GWT.getModuleBaseForStaticFiles().contains("9876")
答案 7 :(得分:0)
这是一个很好的解决方案。
boolean superdevmode = "on".equals(System.getProperty("superdevmode"));
答案 8 :(得分:-1)
我可以建议:
loadData