是否有可能以这种方式从同一类中的另一个本机方法调用本机方法?
public native JavaScriptObject mySECONDJsniMethod(String name) /*-{
//..
return secondVar;
}-*/;
public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
var secondVar = mySECONDJsniMethod(name);
//..
return firstVar;
}-*/;在我的Chrome控制台中,它返回:Uncaught TypeError: mySECONDJsniMethod is not a function。有什么想法吗?谢谢。
发布于 2014-10-09 11:21:46
是。在Java ()中,使用常规的JSNI语法来调用myFIRSTJsniMethod方法。
例如,如果这两个方法位于类com.mycompany.Test中,则可以调用mySECONDJsniMethod(),如下所示:
public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
var secondVar = this.@com.mycompany.Test::mySECONDJsniMethod(Ljava/lang/String;)(name);
//..
return firstVar;
}-*/;有关从JavaScript访问Java方法和字段的更多信息,请参见GWT文档。
编辑:这里的是一个完整的可编译示例:
package com.mycompany.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
public class SO26277049 implements EntryPoint {
@Override
public void onModuleLoad() {
final JavaScriptObject firstVar = myFIRSTJsniMethod("hello world!");
}
public native JavaScriptObject mySECONDJsniMethod(String name) /*-{
var secondVar = {
name: name
};
return secondVar;
}-*/;
public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
var secondVar = this.@com.mycompany.client.SO26277049::mySECONDJsniMethod(Ljava/lang/String;)(name);
$wnd.alert(secondVar.name);
var firstVar = secondVar;
return firstVar;
}-*/;
}https://stackoverflow.com/questions/26277049
复制相似问题