GWT原生到长转换
GWT native to long conversion
我正在尝试将 js 原生数字转换为 GWT Long 并通过 gwt-rpc 发送。
但是我得到了非常奇怪的结果..
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; }-*/;
}
控制台输出:
idSTr:123
id:0
谁能解释一下,这是怎么发生的?
此处没有关于您正在使用的 JavaScriptObject 的信息。
您是说 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number 吗?
您要查询的 'id' 字段是什么?
Chrome 控制台中的快速测试告诉我,您可能希望使用以下方法将 Number 的值获取为字符串:
var d = new Number(100)
> undefined
d.toString()
> "100"
如果您使用的是其他类型的 js "native" 号码,请提供更多详细信息。
问题出在将 js 原生数字转换为 long。
避免将js数字转换为long或使用字符串的最佳选择。
这里是这个案例的解决方法:
public final native String _getId()/*-{ return ''+this.id; }-*/;
您不应将 long
与 JavaScript 一起使用,如下所述:http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html#important
基本上,最简单的方法就是使用double
。
我正在尝试将 js 原生数字转换为 GWT Long 并通过 gwt-rpc 发送。 但是我得到了非常奇怪的结果..
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; }-*/;
}
控制台输出:
idSTr:123
id:0
谁能解释一下,这是怎么发生的?
此处没有关于您正在使用的 JavaScriptObject 的信息。 您是说 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number 吗?
您要查询的 'id' 字段是什么?
Chrome 控制台中的快速测试告诉我,您可能希望使用以下方法将 Number 的值获取为字符串:
var d = new Number(100)
> undefined
d.toString()
> "100"
如果您使用的是其他类型的 js "native" 号码,请提供更多详细信息。
问题出在将 js 原生数字转换为 long。 避免将js数字转换为long或使用字符串的最佳选择。
这里是这个案例的解决方法:
public final native String _getId()/*-{ return ''+this.id; }-*/;
您不应将 long
与 JavaScript 一起使用,如下所述:http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html#important
基本上,最简单的方法就是使用double
。