gpt4 book ai didi

java - 从 JSNI 调用 Java 方法

转载 作者:搜寻专家 更新时间:2023-11-01 02:27:00 25 4
gpt4 key购买 nike

我想从 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();
}

最佳答案

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

(此错误是“无法从类型 TypeName 对非静态方法 methodName() 进行静态引用”的 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

关于java - 从 JSNI 调用 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19914854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com