Tuesday, December 19, 2017

Re: JsInterop Array

I had a similar problem with DataTables requiring a String[] argument. The one generated from java had some hidden fields that DataTables choke on. I ended up creating a JsString type that casts from/to String, but at the time I didn't know or didn't exist the gwt-interop-utils.

In your case however I would suggest the following:

*** NOTE:  int and int[] are not represented in javascript *** and you may have a problem during casting in/out. I would suggest using double if/when you hit the problems. Traceback and browser's debugger is invaluable.

@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
public class NodeSet {
  public int id;
  public int x;   <-- conside use of double
  public int y;
  public int[] nodes;
  @JsOverlay
  public static NodeSet create(int id, int x, int y, int[] nodes) {
      final NodeSet ns = new NodeSet();
      ns.id = id;
      ns.x = x;
      ns.y = y;
      ns.nodes = nodes;
      return ns;
  }
}



On Mon, Dec 18, 2017 at 8:18 PM, cesar paulo alves <caesaralves@gmail.com> wrote:
Hello guys, so I'm getting crazy with this.

I need to inject a java array inside a javascript library.

The problem is that the Js library will iterate over an integer array, and if the element is not an integer it exits the function.
When I create the integer array and pass it to plain javascript array, for some reason it carries garbage inside, I already tried everything with no success.

So this is my java nodeset (https://pastebin.com/AdJqj80p)


I'm using the gwt-interop-utils -> https://github.com/GWTReact/gwt-interop-utils/blob/master/src/gwt/interop/utils/client/plainobjects/JsPlainObj.java


And when I inspect the javascript object in the browser you can see it has lots of garbage, and I cant clean it. See the nodes array I have (_clazz_0_g$,__elementTypeCategory$,_elementTypeId$"......).


And when I do the same with Js I don't have this garbage (obvious).



I already used the JsArray and everything, but no luck =/.


Do you have any Idea how to have a plain javascript array with jsInterop?


Thanks a lot.





--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.



--
Vassilis Virvilis

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment