2011-08-03 3 views
0

私はGWTオーバーレイタイプを使用して、WebサーバーからJSON応答を解析しています。これは、すべての必要なフィールドが存在しない場合、問題は、ある、正常に動作します:GWT Overlay Tpes nullを確認する

例: JavaScriuptオーバーレイ型クラス今私は{「ウィジェット」のようなものがあれば

public class JSWorkplace extends JavaScriptObject{  
protected JSWorkplace() {   
} 
public final native String getWidgets() /*-{ 
    return this.Widgets; 
}-*/; 

:「のBlaを」 }サーバからすべてのものが得られます。getWidgetsは "Bla"を返します。 この「{}」がサーバーから来た場合、私のアプリケーションはgwtWidgets関数をスローします。フィールド「ウィジェット」が読み込まれる前に存在するかどうかを確認するにはどうすればよいですか。

よろしく、 ステファン

答えて

0

それが何かやっ未定義かどうかを確認することができます:this.Widgets == undefinedを。 個人的には、eval()の後にデフォルト値を設定することをお勧めします。たとえば、JSWorkplaceオブジェクトを作成するには、次のようなメソッドを呼び出します。

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

    ... 

    return object; 
}*-/; 
+2

evalを使用しない理由がたくさんあります。また、ソリューションは多くのeaiserです:public final native String getWidgets()/ * - { return this.Widgets || []; } - * /; –

関連する問題