Трудно заставить JSNI работать с Errai

Мне трудно заставить JSNI работать напрямую с Errai, например, этот код:

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

Где этот JSNI называется rooting from

@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!
}

Там, где этот Java-код, CallOut работает нормально, если первым параметром является идентификатор DIV, который вручную вводится в HTML-код приложения GWT, но если он находится в шаблоне страницы Errai, это не сработает. Любые идеи, почему это не работает?


person quarks    schedule 31.07.2013    source источник
comment
Вы уверены, что div был создан?   -  person Tom Carchrae    schedule 31.07.2013


Ответы (2)


Метод жизненного цикла @PageShowing вызывается до того, как шаблон будет добавлен в модель DOM. Из PageShowing JavaDoc:

Указывает, что целевой метод следует вызывать, когда @Page виджет, членом которого он является, должен быть отображен на панели данных навигации: после обновления @PageState полей виджета и до его отображения на панели данных навигации.

Попробуйте вместо этого использовать @PageShown.

person Jonathan Fuerth    schedule 31.07.2013
comment
Спасибо, я попробовал @PageShown, но это тоже не сработало, однако в onAttach все работало нормально. - person quarks; 01.08.2013

Вместо этого мне удалось заставить его работать в @PageShowing или @PageShown, но внутри onAttach или @Page:

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