2013-07-31 58 views
0

我發現很難使JSNI與Errai直接合作,採取例如下面的代碼:從努力使JSNI工作,Errai

@PageShowing 
public void onShow() { 
       CallOut startCallOut = new CallOut("dashboard", Placement.RIGHT); 
       startCallOut.setTitle("Take an example tour"); 
       startCallOut.setContent("Start by taking an example tour to see GWT-Tour in action!"); 
       startCallOut.setWidth(240); 
       startCallOut.centerXOffset(); 
       startCallOut.centerArrowOffset(); 
       GwtTour.createCallOut(startCallOut); // Here! 
} 

private static native void _createCallOut(JavaScriptObject callout)/*-{ 
    $wnd.hopscotch.getCalloutManager().createCallout(callout); 
}-*/; 

如果這JSNI被稱爲roothing

如果這個Java代碼CallOut工作正常,如果第一個參數是手動輸入到GWT應用程序HTML中的DIV的ID,但是如果它在Errai的頁面模板上,則不起作用。任何想法爲什麼它不工作?

+0

確定股利已經創造出來的? –

回答

2

@PageShowing生命週期方法被調用之前該模板已被添加到DOM。從PageShowing的JavaDoc:

表明,當@Page 控件它是即將被顯示在 導航內容面板用構件的目標方法應該叫: 已更新widget的@PageState領域後並在其顯示在導航內容 面板之前。

請嘗試使用@PageShown代替。

+0

謝謝,我試過@PageShown,但它也沒有工作,在onAttach但它確實工作正常。 – xybrek

1

我設法使它工作中,而不是@PageShowing@PageShown,但裏面onAttach@Page

@Override 
protected void onAttach() { 
     super.onAttach(); 
     // Works fine inside 
    }