2013-07-31 61 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 
    }