【问题标题】:Call Java method from JSNI从 JSNI 调用 Java 方法
【发布时间】:2013-11-11 20:02:10
【问题描述】:

我想从 JSNI 变量 successHandler() 调用 Java 方法 test()。但是,我收到错误

[ERROR] - Line 110: Missing qualifier on instance method 'com.gw.myProject.client.presenter.payments.PaymentProgramPresenter.test'

原码:

public static native void purchase(String token) /*-{

      var successHandler = function(status){ // Success handler
        return @com.gw.myProject.client.presenter.payments.PaymentProgramPresenter::test()();
      } 
      var failureHandler = function(status){ // Failure handler
        // $wnd.alert('testing');
      }

      $doc.purchaseAction(token, successHandler, failureHandler);
    }-*/;

    public void test() {
        this.onHide();
    }

【问题讨论】:

    标签: java javascript gwt jsni


    【解决方案1】:

    您的test() 不是静态的。因此,您需要将其设为静态或指定实例或将购买设为非静态。

    (这个错误是“Cannot make a static reference to the non-static method methodName() from the type TypeName”的GWT版本)

    public native void purchase(String token) /*-{
    
      var instance = this;
    
      var successHandler = function(status){ // Success handler
        return instance.@com.gw.myProject.client.presenter.payments.PaymentProgramPresenter::test()();
      } 
      var failureHandler = function(status){ // Failure handler
        // $wnd.alert('testing');
      }
    
      $doc.purchaseAction(token, successHandler, failureHandler);
    }-*/;
    
    public void test() {
        this.onHide();
    }
    

    你可以在gwtproject.org找到真正好的教程

    还有一个提示。如果您在 JSNI 中创建 javascript 回调,请使用 en $entry()-function 包装它们:

    $doc.purchaseAction(token,$entry( successHandler ), $entry( failureHandler));
    

    这将启用 GWT uncaughtExceptionHandler

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多