GWT native to long conversion

76 views
Skip to first unread message

Nikolay Prokofiev

unread,
Aug 1, 2015, 9:37:51 AM8/1/15
to Google Web Toolkit

Hi.

I'm trying to convert js native number to GWT Long and send it over gwt-rpc. But I got very weird results..

public class gwtbugEntryPoint implements EntryPoint {
  @Override
  public void onModuleLoad() {
    String data = "{\"type\":\"upd\", \"id\":123}";
    ServerEvent serverEvent = JsonUtils.<ServerEvent>safeEval(data);
    RootPanel.get().add(new HTML("GWT id="+serverEvent.getId()));
  }

}
class ServerEvent extends JavaScriptObject {
    protected ServerEvent() {
    }

public final native String getType()/*-{ return this.type; }-*/;

public final Long getId(){
    String idStr = _getId();
    GWT.log("idSTr:" + idStr);
    Long id = new Long(idStr);
    GWT.log("id:"+id);
    return id;
}

public final native String  _getId()/*-{ return this.id; }-*/;
}

console output:

idSTr:123

id:0

Can anyone explain me, how that could happen?

Alberto Mancini

unread,
Aug 1, 2015, 6:07:56 PM8/1/15
to Google Web Toolkit
Hello,
in your example you are returning  id (a numeric value) as a string ant this is the origin of the unexpected behavior.
Indeed this works

public final native String  _getIdString()/*-{ return ''+this.id; }-*/;

as well as returning a java numeric value:

public final native int  _getIdInt()/*-{ return this.id; }-*/;


Anyway, in general, is probably not a good idea to use Long for a numeric 'native'  value  
because in js you cannot represent a long number (see f.e. http://stackoverflow.com/questions/17320706/javascript-long-integer).

Hope it helps.
    
      Alberto. 



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

Nagin Kothari

unread,
Aug 2, 2015, 12:29:02 AM8/2/15
to google-we...@googlegroups.com
instead of

Long id = new Long(idStr);

try
Long id = Long.parseLong(idStr);

--
Nagin Kothari
Co-founder,
Zilicus Solutions
www.zilicus.com

Nikolay Prokofiev

unread,
Aug 2, 2015, 8:38:04 AM8/2/15
to Google Web Toolkit
Thanks!

суббота, 1 августа 2015 г., 18:07:56 UTC-4 пользователь Alberto Mancini написал:
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsub...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages