GWT覆盖Tpes检查是否为空

GWT覆盖Tpes检查是否为空,gwt,types,overlay,Gwt,Types,Overlay,我正在使用GWT覆盖类型解析来自web服务器的JSON响应。一切正常,问题是,如果所需字段不存在: 例如: JavaScriptOverlay类型类 public class JSWorkplace extends JavaScriptObject{ protected JSWorkplace() { } public final native String getWidgets() /*-{ return this.Widgets; }-*/; 现在,如果我有

我正在使用GWT覆盖类型解析来自web服务器的JSON响应。一切正常,问题是,如果所需字段不存在:

例如: JavaScriptOverlay类型类

public class JSWorkplace extends JavaScriptObject{    
protected JSWorkplace() {        
}
public final native String getWidgets() /*-{
    return this.Widgets;
}-*/;
现在,如果我有类似{Widgets:Bla}的东西来自服务器,一切正常,getWidgets返回Bla。 如果这个{}来自我的应用程序在gwtWidgets函数中抛出的服务器。在读取字段小部件之前,如何检查字段小部件是否存在

问候,,
Stefan

您可以通过如下操作检查它是否未定义:this.Widgets==未定义。 就个人而言,我更喜欢在评估之后设置默认值。例如,为了创建JSWorkplace对象,我将调用如下方法:

public static native JSWorkspace createFromJSON(String json)/*-{
  var object = eval('(' + json + ')');
  if (object.Widgets == undefined) { object.Widgets = []; }

  ...

  return object;
}*-/;

有很多理由不使用eval,因为eval不安全且速度慢。另外,解决方案也非常简单:public final native String getWidgets/*-{返回this.Widgets | |【】}-*/;