我需要一个包含JsArray和String的JavaScriptObject。 那个JsArray应该具有像普通GWT的JsArray这样的所有功能,比如push(),pop()等。 但是如何创造呢? 我创造了一些我的意思,但它不起作用
public class Tour extends JavaScriptObject {
protected Tour() {
// TODO Auto-generated constructor stub
}
public static Tour getInstance(){
return JavaScriptObject.createArray().cast();
}
public final native void setTourName(String name)/*-{
this.name = name;
}-*/;
public final native String getTourName()/*-{
return this.name;
}-*/;
public final native JsArray<JavaScriptObject> getArray() /*-{
return this.array;
}-*/;
public final native void setJsArray(JsArray<JavaScriptObject> array)/*-{
this.array = array;
}-*/;
public final native void push(JavaScriptObject obj)/*-{
this.array.push(obj);
}-*/;
public final native int getLength()/*-{
this.array.length;
}-*/;
}
答案 0 :(得分:1)
public class Tour extends JavaScriptObject {
protected Tour() {
}
public static Tour getInstance() {
return getInstance(null, null);
}
public static Tour getInstance(String name) {
return getInstance(name, null);
}
public static native Tour getInstance(String name, JsArray<JavaScriptObject> array) /*-{
return {
name : name,
array : array || []
};
}-*/;
// the rest of your class stays untouched...
public final native void setTourName(String name)/*-{
this.name = name;
}-*/;
public final native String getTourName()/*-{
return this.name;
}-*/;
public final native JsArray<JavaScriptObject> getArray() /*-{
return this.array;
}-*/;
public final native void setJsArray(JsArray<JavaScriptObject> array)/*-{
this.array = array;
}-*/;
public final native void push(JavaScriptObject obj)/*-{
this.array.push(obj);
}-*/;
public final native int getLength()/*-{
this.array.length;
}-*/;
}
答案 1 :(得分:0)
JsArray是(通过扩展它)一个JavaScriptObject本身。 但是,JsArray不能保存基于Java / GWT的String对象,因为它们不是真正的JavaScript字符串。
要让JsArray包含字符串,请使用JsArrayString。这个处理原生级别的字符串。
JsArrayString jas = JsArrayString.createArray()。cast();