很难让JSNI与Errai合作

时间:2013-07-31 17:27:05

标签: java gwt errai

我发现很难让JSNI直接与Errai合作,例如这段代码:

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

这个JSNI从

被称为roothing
@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!
}

如果第一个参数是手动输入到GWT应用程序HTML中的DIV的ID,那么这个Java代码CallOut可以正常工作,但如果它在Errai的页面模板上,则不起作用。任何想法为什么它不起作用?

2 个答案:

答案 0 :(得分:2)

在将模板添加到DOM之前,调用<{1>}生命周期方法。来自@PageShowing JavaDoc:

  

表示应在PageShowing时调用目标方法   小部件它是即将显示的成员   导航内容面板:在窗口小部件的@Page字段之后   已更新,并在导航内容中显示之前   面板。

请尝试使用@PageState

答案 1 :(得分:1)

我设法让它工作在@PageShowing@PageShown,但在onAttach@Page内:

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