我有一个 java 字符串数组,现在我想将它传递给一个 JSNI 函数。我尝试在 GWT 中使用 JsArrayString
,但是我发现它不能直接初始化,因为它没有可见的构造函数。那么如何将我的 String 数组传递给 JSNI 函数并在我的 javascript 代码中使用它呢?代码如下所示:
public void callJSNI() {
String[] stringArray = xxx;
//How should I convert the array into a JSNI-readable format here?
}
private native void JSNIMethod(JsArrayString array) /*-{
//some code to use the array in javascript
}-*/
最佳答案
API 没有提供简单的方法来做到这一点,您必须创建一个实用方法来:
- 创建一个新的 JSNI 数组
- 迭代 Java 数组的参数并填充 JSNI 数组
像这样:
public static JsArrayString toJsArray(String[] input) {
JsArrayString jsArrayString = createEmptyJsArrayString();
for (String s : input) {
jsArrayString.push(s);
}
return jsArrayString;
}
private static native JsArrayString createEmptyJsArrayString() /*-{
return [];
}-*/;
正如 OP 所建议的,我们当然可以跳过 native 初始化并使用 JsArrayString.createArray()
。
现在我们可以摆脱原生初始化,所以我们的代码简化为:
public static JsArrayString toJsArray(String[] input) {
JsArrayString jsArrayString = JsArrayString.createArray().cast();
for (String s : input) {
jsArrayString.push(s);
}
return jsArrayString;
}
关于java - GWT:如何将 java 数组传递给 javascript native 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22167486/