2

HTMLとJavaScriptコードからカスタムGWTウィジェットを作成する必要があります。javascriptコードはウィジェットで呼び出す必要がありますが、javascriptはウィジェットのDOMコンポーネントをパラメーターとして受け取る必要があります。

また、ウィジェットのHTMLは、ウィジェットのコンストラクターに与えられた引数に直接依存している必要があります。

これを行う「慣用的な」方法は何ですか?

4

1 に答える 1

3

とても簡単です。Widgetクラスを拡張することから始めることができます。

DOM表現を作成するには、を使用する必要がありますDocument.get()(または、他の古いAPIは好みによって異なります)。外部JavaScriptを呼び出すには、 JSNIを使用する必要があります。

onDetachまた、メソッドとメソッドをオーバーライドするonAttach必要があるため、要素がdomに追加されたとき、および外部JSがクリーンアップを実行する必要があるとき(必要な場合)に外部JSに通知できます。

コード例:

public class MyWidget extends Widget{

     public MyWidget(String params) {
         Document document = Document.get();
         DivElement divElement = document.createDiv();
         divElement.setInnerHtml(params);
         setElement(divElement); //important, widget needs to know it's root element
     }


     private static native void doJsMagic(Element element)/*-{ //notifies js about element
         $wnd.doSomething(element);
     }-*/;

     private static native void undoJsMagic(Element element)/*-{ 
        //notifies js that it should do some cleanup (if needed)
        //since it is unaware of GWT widget lifecycle
        $wnd.undoSomething(element)

     }-*/;

     @Override
     public void onAttach() {
        super.onAttach();
        doJsMagic(getElement());
     }

     @Override
     public void onDetach() {
        super.onDetach();
        undoJsMagic(getElement());
     }

}
于 2012-07-27T21:38:52.547 に答える