如何将JsArray创建为JavaScriptObject

时间:2014-01-21 18:40:35

标签: java gwt gwt2

我需要一个包含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;
}-*/;

}

2 个答案:

答案 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();