在@PostConstruct中调用JSNI方法 - Errai

时间:2013-11-14 20:33:00

标签: java twitter-bootstrap gwt postconstruct errai

我在尝试使用Errai 2.3.2从Java调用JS函数时遇到了问题 我正在使用Bootstrap开关,我需要调用JS函数才能激活它。我需要在创建页面并将所有元素附加到DOM元素后执行此操作。

我已经尝试过了:@ PostConstruct,@ PageShowing,@ PageShown,onAttach()..但这些都不适合我。

我有这个:

@Override
public void onAttach(){
    enableToggleSwitch();
}

public static native void enableToggleSwitch() /*-{
    $wnd.enableToggle();
}-*/;

当我调试它时,似乎是在元素附加到DOM之前调用onAttach()方法。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您不应该覆盖Widget类的onAttach()方法。如果要在附加窗口小部件时执行某些操作,请覆盖onLoad方法。

  /**
   * This method is called immediately after a widget becomes attached to the
   * browser's document.
   */
  protected void onLoad() {
      enableToggleSwitch();
  }

试试这个。

如果这不能解决您的问题,您可以尝试使用调度程序:

    Scheduler.get().scheduleDeferred(new ScheduledCommand() {
        @Override
        public void execute() {
            enableToggleSwitch();
        }
    });