0

i need a JavaScriptObject what contains a JsArray and a String. That JsArray should have all functionalities like the normal GWT`s JsArray like push(), pop() etc. but how to create that? I have created something what i mean but it doesnt work

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 Answers 2

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;
    }-*/;
}
Sign up to request clarification or add additional context in comments.

Comments

0

The JsArray is (by extending it) a JavaScriptObject by itself. The JsArray can however not hold the Java/GWT based String objects, due to that these aren't real JavaScript Strings.

To let the JsArray contain Strings, use the JsArrayString. This one handles strings at native level.

JsArrayString jas = JsArrayString.createArray().cast();

1 Comment

i dont mean that i mean a own javascriptobject overlay class. I have edited the question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.