[英]How to call JSNI method from JSNI method in GWT
是否可以通過這種方式從同一類中的另一個本機方法調用本機方法?
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
。 有任何想法嗎? 謝謝。
是。 在myFIRSTJsniMethod()的JSNI中,使用普通的JSNI語法來調用Java方法。
例如,如果這兩個方法在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;
}-*/;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.