2011-12-08 16 views
3

私はそうのように、タイプミスを回避し、Eclipseのコード補完の恩恵を受けるためには、JSOの定数としてGWT JSOプロパティ名を定義したいと思います:GWT Javascript Overlay Type(JSO)でJava定数を使用しますか?

public final class MyJSO extends JavaScriptObject 
{ 
    /** here is the constant */ 
    private static final String MY_CONST = "myPropName"; 

    protected MyJSO() { 
     super(); 
    } 

    public native void setMyProp(final boolean pFlag) 
    /*-{ 
     [email protected]::MY_CONST = pFlag; 
    }-*/; 

    public native boolean isMyProp() 
    /*-{ 
     if (this.hasOwnProperty(@fully.qualified.MyJSO::MY_CONST)) { 
      return [email protected]::MY_CONST; 
     } else { 
      return false; 
     } 
    }-*/; 
} 

GWTコンパイラは、置き換えることができるはずですコンパイル時に定数から文字列を取得するので、後でJavascriptとして使用するオブジェクトに問題はありません。

しかし、これは全く機能していないので、私は間違っているかもしれないと思っています。 :-)誰も理由を説明できますか?あなたはこれを達成するための良いアイデアを持っていますか?

ありがとうございます! correct syntaxは、静的変数を参照する

答えて

4

ではありません:変数が静的であるため、必要とされている(あなたの例ではthis.、)

@fully.qualified.MyJSO::MY_CONST 

ませ修飾子。

設定したい場合は、次のように/定数名でそうJavaScriptオブジェクトのプロパティを取得:

public native void setMyProp(final boolean pFlag) /*-{ 
    this[@fully.qualified.MyJSO::MY_CONST] = pFlag; 
}-*/; 

public native boolean isMyProp() /*-{ 
    if (this[@fully.qualified.MyJSO::MY_CONST] != null) { 
     return this[@fully.qualified.MyJSO::MY_CONST]; 
    } else { 
     return false; 
    } 
}-*/; 
+0

感謝を!それを解決するヒントは、ドット表記ではなく、プロパティにアクセスするために角括弧を使用する必要があるということでした。角括弧を使用して、私のコードが動作します! 'hasOwnProperty'行は変更されていなくてもかまいません。 –

+0

[ネストされた構文の強調表示]がわかっていれば(http://meta.stackexchange.com/q/203205/205238)... :-) –

関連する問題