我发现很难使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!
}


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

最佳答案

在将模板添加到DOM之前,将调用@PageShowing生命周期方法。从PageShowing JavaDoc:


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


尝试改用@PageShown

10-04 20:07