How can I convert JavaScript array of elements to Java
com.google.gwt.core.client.Element[]?
The JavaScript array is create in JSNI method:
private static native Element[] getElementsBySelectorWrapper(Element
e, String selector) /*-{
var result = $wnd.Selector.findChildElements(e, [selector]);
return result;
}-*/;
Now I have exception "Cannot convert to type java.lang.Object from
JavaScript object"
> > JavaScript object"- Hide quoted text -
>
> - Show quoted text -
private static native Object[] getArray() /*-{
var clazz = @java.lang.Object::getClass()();
var result = @java.lang.reflect.Array::newInstance(Ljava/lang/Class<?
>;[I)(clazz, 10);
return result;
}-*/;
I don't understand where is the problem?
private static Element[] createElements(int len) {
return new Element[len];
}
private static void setElement(Element[] container, int pos, Element
value) {
container[pos] = value;
}
private static native Element[] getElementsBySelectorWrapper(Element
e, String selector) /*-{
var result = $wnd.Selector.findChildElements(e, [selector]);
var resultSize = result.length;
var elements =
@main.client.helpers.PrototypeHelper::createElements(I)(resultSize);
for(var i=0; i<resultSize; ++i) {
var element = result[i];
@main.client.helpers.PrototypeHelper::setElement([Lcom/google/gwt/
user/client/Element;ILcom/google/gwt/user/client/Element;)(elements,
i, element);
}
return elements;
}-*/;
For future reference, java.lang.reflect.* is 100% invalid in GWT code
- just like every other class that isn't in java.util and java.lang
with the exception of java.io.Serializable.