从JSNI调用Java方法
我想从JSNI变量从JSNI调用Java方法,java,javascript,gwt,jsni,Java,Javascript,Gwt,Jsni,我想从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) /*-{
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()
不是静态的。因此,您需要将其设置为静态,或者指定一个实例,或者将购买设置为非静态
(此错误是GWT版本的“无法从类型TypeName
静态引用非静态方法methodName()”)
你可以在网站上找到一个真正好的教程
再来一个提示。如果在JSNI中创建javascript回调,请使用en$entry()函数包装它们:
$doc.purchaseAction(token,$entry( successHandler ), $entry( failureHandler));
这将启用GWT uncaughtExceptionHandler
$doc.purchaseAction(token,$entry( successHandler ), $entry( failureHandler));